Python中的位运算符主要有:按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移位(<>),下面将详细介绍这些运算符的使用及应用。
一、按位与(&)
按位与(&)的运算规则是将两个数的二进制相同位上的数字进行”与”操作,即都为1,结果才为1,否则为0。例如:
a = 60 # 60的二进制为 0011 1100
b = 13 # 13的二进制为 0000 1101
c = a & b # 12的二进制为 0000 1100
print("c的值为:", c)
上述代码中,结果为12,是因为60的二进制为0011 1100,13的二进制为0000 1101,对应位置上的数字都为1的只有第4个和第5个,因此得到的结果为0000 1100,即十进制的12。
按位与的应用场景:通过按位与的操作,可以将一个数的某些位设为0,例如通过将0b11110000进行按位与0b00111111的操作可以将前四位清零。
二、按位或(|)
按位或(|)的运算规则是将两个数的二进制相同位上的数字进行”或”操作,即有一个为1,结果为1,否则为0。例如:
a = 60 # 60的二进制为 0011 1100
b = 13 # 13的二进制为 0000 1101
c = a | b # 61的二进制为 0011 1101
print("c的值为:", c)
上述代码中,结果为61,是因为60的二进制为0011 1100,13的二进制为0000 1101,对应位置上的数字都为0的只有第6个,因此得到的结果为0011 1101,即十进制的61。
按位或的应用场景:通过按位或的操作,可以将一个数的某些位设为1,例如通过将0b00001111进行按位或0b11000000的操作可以将后四位设为1。
三、按位异或(^)
按位异或(^)的运算规则是将两个数的二进制相同位上的数字进行”异或”操作,即相同为0,不同为1。例如:
a = 60 # 60的二进制为 0011 1100
b = 13 # 13的二进制为 0000 1101
c = a ^ b # 49的二进制为 0011 0001
print("c的值为:", c)
上述代码中,结果为49,是因为60的二进制为0011 1100,13的二进制为0000 1101,对应位置上的数字都不同的只有第1个、第2个、第3个、第4个和第5个,因此得到的结果为0011 0001,即十进制的49。
按位异或的应用场景:通过按位异或的操作,可以将一个数的某些位取反,例如将0b10011010进行按位异或0b11111111的操作可以将这个数字中的所有位取反。
四、按位取反(~)
按位取反(~)的运算规则是将一个数的二进制码按位取反,即0变1,1变0。例如:
a = 60 # 60的二进制为 0011 1100
b = ~a # -61
print("b的值为:", b)
上述代码中,结果为-61,是因为60的二进制为0011 1100,按位取反后变为1100 0011,再转换成十进制表示为-61。
按位取反的应用场景:按位取反一般用于补码的运算。在计算机中,负数是以补码的形式存储的。按位取反后再加上1,即可得到负数的原码。
五、左移位(<<)
左移位(<<)的运算规则是将一个数的二进制码向左移动指定的位数,移动后空出的位补0。例如:
a = 15 # 15的二进制为 0000 1111
b = a << 2 # 60的二进制为 0011 1100
print("b的值为:", b)
上述代码中,结果为60,是因为15的二进制为0000 1111,向左移动两位后变为0011 1100,即十进制的60。
左移位的应用场景:通过左移位的操作,可以将一个数乘以2的整数次方,例如将0b00001111进行左移位2位的操作可以将这个数字乘以4。
六、右移位(>>)
右移位(>>)的运算规则是将一个数的二进制码向右移动指定的位数,移动后空出的位补0。例如:
a = 60 # 60的二进制为 0011 1100
b = a >> 2 # 15的二进制为 0000 1111
print("b的值为:", b)
上述代码中,结果为15,是因为60的二进制为0011 1100,向右移动两位后变为0000 1111,即十进制的15。
右移位的应用场景:通过右移位的操作,可以将一个数除以2的整数次方,例如将0b11110000进行右移位2位的操作可以将这个数字除以4。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/190586.html