位运算符
&:按位与。
|:按位或。
^: 按位异或。
~:按位取反
<<:左移位运算
>>:右移位运算
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。这一点与C类似,C语言也是非0表示真,0表示假。
x = 4
print((x < 3) & (x < 6)) #false true = false
print((x > 3) & (x > 6)) #true false = false
print((x < 3) & (x > 6)) #false false = false
print((x > 3) & (x < 6)) #true true = true
总结:只要有一个为false,结果直接为false。只有两边都为true,结果为true。
print(5&9) # 输出1
解析:
整数5的二进制:00000101 整数9的二进制:00001001
x = 4
print((x < 3) | (x < 6)) #false true = true
print((x > 3) | (x > 6)) #true false = true
print((x < 3) | (x > 6)) #false false = false
print((x > 3) | (x < 6)) #true true = true
总结:两边只要有一个为true,结果为true。 只有两边都有false,结果为false。
print(5|9) #输出13
解析:(与上同理)
x = 4
print((x < 3) ^ (x < 6)) #false true = true
print((x > 3) ^ (x > 6)) #true false = true
print((x < 3) ^ (x > 6)) #false false = false
print((x > 3) ^ (x < 6)) #true true = false
总结:两边相同结果是false; 两边不同结果是true;
print(5^9) #输出12
解析:(与上同理)
a = -5
print(~a) # 输出4
首先我们要弄懂几个概念:
1、原码是直接将一个数值换算成二进制数
2、有符号整数的最高位是符号位,符号位为0代表正数,1代表负数。
3、无符号整数则没有符号位,只能表示0和整数。
4、计算机底层以补码的形式保存所有的整数。
补码的计算规则是:正数的补码和原码完全相同,负数的补码是其反码加1;
反码是对原码按位取反,只是最高位(符号位)保持不变。
print(5<<2) #输出20
print(-5<<2) #输出-20
左移运算符是将操作数的二进制码整体左移指定位数,左移后右边空出来的位以0来填充
-5左移如下图:
左移两位后得到一个二进制补码,这个二进制补码的最高位是1,表明是一个负数,换算成十进制数就是-20.
print(-5 >> 2) #输出-2
-5右移两位后左边空出两位,空出来的两位以符号位来填充。
右移运算后得到的结果的正负与第一个操作数的正负相同。左边空出来的位以原来的符号来填充(正数,左边补0;负数左边补1)
位移运算符只适合对整型数进行运算
右移n位,相当于除以2的n次方
左移n位就相当于乘以2的n次方