1. 回顾
原码=符号位+真值
反码=除符号位以外,其他的在原码的基础上取反
补码=反码加1
2. 变量
变量名要是标识符,不能是关键字
‘=’ 是赋值符号,固定写法
使用变量
变量中保存的数据能做什么,变量就能做什么
使用变量的时候其实在使用变量中保存的数据
变量中保存的数据可以做什么,变量就可以做什么
修改变量中的数据(重新给变量赋值)
python中同一个变量可以保存不同类型的值
同时定义多个变量/同时给多个变量赋值
同时给不同变量赋相同值
同时给不同变量赋不同值
交换两个变量的值
python中数字运算的等号是==
赋值标志是=
3.变量赋值的原理
1.在堆中申请内存
2.将数据保存在内存中
3.让变量和保存数据的内存进行关联
4.数学运算符
- , - ,* , / ,%,//,**
%(取余/取模)
应用:
获取变量的个位数或者低几位数 10,100
判断一个数是否能被另外一个数整除
//
应用:
求商取商的整数部分(向下取整/向小取整)
4.12 —4
-5.12— -6
取定长数字的最高位//100,//10
5.比较运算符
, < , == , >= , <= , !=
notice:
所有比较运算符的结果都是布尔值
数字数据不能和字符串数据进行比较
python中支持比较运算符的连写表示范围
6.逻辑运算符
and,or, not
and
希望两个场景或者多个场景同时满足时用
or(只要有一个True,结果就是T)
在多个条件一个满足就行
not
当操作对象不是布尔值时
d1 and d2
d1 True,则结果d2
d1 False,则结果d1
d1 or d2
d1 True,则结果d1
d1 False,则结果d2
布尔值的确定:为0为空则是False,其他的是True
表达式的短路
e1 and e2 e1False时,e2不会被执行
e1 or e2 e1True,e2不会被执行
7.赋值运算符
=, += ,-= ,*= ,/= ,%= ,//= ,**=
运算符的优先级:数学运算符》比较运算符》逻辑运算符》赋值运算符
8.位运算
位运算的对象是直接操作数据在内存中的补码
&(按位与)
|(按位或)
^(异或)
~(按位取反)
<<(左移)
(右移)
运算符操作的是数据在内存中存储的原始二进制位(补码),而不是数据本身的二进制形式
&
n1 & n2 两个结果都是1的话结果是1,否则为0
0110 1101(补) & 1010 1100(补)—0010 1100(补)
print(5&9)
5:0000 0101(补)(5在内存中的存储)
9: 0000 1001(补)(9在内存中的存储)
5&9: 0000 0001=1 (1在内存中的存储)
e.g.:
-9&5
-9:1000 1001 (原)1111 0111(补)
5:0000 0101(补)
5&9:0000 0101(补)=5
应用:判断数字的奇偶性
001101101 & 00000001
让被判断数字和1进行按位运算,是0就是偶数,否则是奇数
如:print(3&1)
|
只要有一个1结果就是1,两个都是0结果才是0
练习:7 | 16
7:0000 0110
16:0001 0000
7|16: 0001 0110=22
7 | -16
7:0000 0110
-16:1001 0000(原)=1110 1111(反)=1111 0000(补)
7|-16:1111 0110
^
不同为1,相同为0
18:0001 0010
9:0000 1001
9^18:0001 1011=16+11=27
27: 0001 1011
9:0000 1001
27^9:0001 0010=18
~
0变1,1变0
~数字
<< , >>
应用:高效率快速乘二或者二的次方数