现在有很多语言都是本地编译了,往虚拟机上发展了
官方的c语言写的cpython解释器
ipython是一个交互式工具
pypy是贪吃蛇,自己解释器自己,just in python 动态编译技术,效率高,性能高于cpyhon
把python的源代码生成java的字节码,跑在jvm上,java中间的字节码是一个开源的标准,只要能兼容即可
跟jpython,是.net,是微软的一套,可以转成.net字节码
python是语法简单 ,但是并不代表写程序简单
面试问你什么解释器,你说用的cpython,有没有用过pypy,(我们测试过,但是跑在pypy上并不兼容,就放弃了,知道它是python写了,性能比cpython要高)
进制要搞清楚,16进制(0xa,a代表10,16进制有10。0-9,11到16=a-f),8进制(0o,o代表8进制第一个字母。10代表8.因为逢8进1),2进制(0b10,10代表2,逢2进1)
第一个必须大写,属于整形的子类型,0和非0
浮点数运算是很消耗cpu的在进行大量的图片处理的时候
虚步和实步
要求需要单引号或者双引号引起来,表示字符串
三引号’’’ /""",可以换行写
字符串转义
\代表一个斜杠,在字符串中
\t, tab键
\r,回车
\n,换行符
’ ,
",
guido很讨厌c语言花括号的写法,改用缩进,js可以都压成1行
c,java,python全部大小写敏感
禁止使用中文
python是动态,强类型,语言,无法定义常量,必须记住,怎么判断是强类型,就需要拿字符串和数字相加看是否报错,js就不报错,是弱类型的,python是强类型的
静态编译的语言是c,c++,定义变量为整形的就不能再赋值字符串,会报错,必须先告诉变量是什么类型
动态编译,不做类型检查,放到线上,可能因为类型不对导致程序出现错误,python是都可以
自由会带来很多问题。编译时不检查,放到线上就出现问题
javascript也是动态语言,不用定义类型,用的是什么就是什么
强弱
当前windows安装
完全不同的两个类型相加,a1是字符串
python无法像javascript做隐式转换,只能做显示转换,强制类型转换
python必须强制类型转换,类型统一后进行操作
1个斜杠代表自然除法,我们理解的,
//代表整除
8是2的三次方,32>>3(222),但是虚拟机会帮你转换
10进制的12可以描述成16进制的,0xc,8进制的0o14,2进制的0b1100
~取反12 等于多少
带引号代表字符串
*1100对应8421
18+14+2.*+1.0=12 后面两个0就不算,所以等于12
取反-13,下面开始了解
原码给人看,不是给机器用的
2. 反码
反码的表示方法是:
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算.
计算器表现的数字都是补码补码的表示方法是:
正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值.
早期的乘法都是用+法来计算的。cpu十分昂贵
8位1111 1111是一个字节,-1如果你是一个字节表示,最高位就是8位
2个字节表示一个整数,写成16进制就是FFFF
5-1怎么来
0000 0101 =5(对应8421,08+14+02+11=5) 5-1=4
1111 1111
用补码加法
0000 0101
1111 1111+1
0000 0000 1溢出了
所有数+0 所以 还有个1
0000 0100 =4
减法转换成加法
12是
0000 1100
按位取反
1111 0011 结果补码,1是负数
继续按位取反,最高位不变
1000 1101 -13
**
10等于0000 1010
9 等于0000 1001
0000 0011=3
异或是相异出1,相同出0**
这些是计算机学习 的基本工
python的不同类型可以比较是否相同,等不等,是不是,不可以比较大小
但是javascript会做隐式转换
与代表两者条件都需要满足
或满足一个即可
短路运算符用的好要取决于你哪个放前面,因为提前断掉运算减少cpu运算
or可以看做+法,and表示乘法
条件1+任何数都大于0
乘法如果前面错误就是0,就是0不用往下算了
变量就是标识符,。操纵标识符对应的内存中的数据
in是不是在里面
次方
异或,按位相加
位或,按位相加,
位于就是按位相乘
x取反
单目运算符是高于双目运算符的
赋值即定义,极限与python动态编译语言