原码
- 5=>0b101,1=>0b1,-1=>-ob1,bin(-1)
反码
- 正数的反码与原码相同,负数的反码符号位不变其余位按位取反
补码
- 正数的补码与原码相同,负数的补码符号位不变其余位按位取反后加1(补码的补码就是原码)
负数
- 负数在电路的CPU中的运算器实现了加法器,但是没有减法器,减法是转换成了加法
- 负数在计算机中使用补码存储,-1的补码位1111 1111
- 5-1=>5+(-1) 直觉上是0b101-0b1,其实计算中就是0000 0101+1111 1111,溢出位舍弃
- ~12为什么=-13
- 10^9=? 10^-9=? 为什么
5-1:
0000 0101+1111 1111=0000 0100=4
~12:
0000 1100 取反1111 0011 计算机中的是补码,原码为1000 1100+1=10000 1101=-13
10^9= 0000 1010^0000 1001=0000 0011=3
10^-9=0000 1010^1111 0110+1=0000 1010^1111 0111= 1111 1101=原码 1000 0010+1=10000 0011=-3
比较运算符
- == != < > >= <= (同类型的可以比较大小,不同类型的可以用==,字符串的比较是每个字符逐个比较)
- 返回一个Bool值
- 1<'1' 1=='1'
- 链式比较操作符 4>3>2 4>number>=1
逻辑运算符
- 与或非 and or not
- 短路运算符
- and 如果第一个表达式为False,后面则没有必要计算了,这个逻辑表达计算式一定是False
- or如果第一个表达式为True,后面没有必要计算了,这个逻辑表达式一定是True
赋值运算符
- a=min(3,4)
- += -= *= /= %=
- 成员运算符 in not in
- 身份运算符 is is not
运算符的优先级
- 算数运算符>位运算符>身份运算符>成员运算符>逻辑运算符