--位运算是把数字看做二进制数来进行计算的,先将要进行运算的数据转换为二进制,然后才能进行运算
·两个操作数据的二进制表示,只有对应位都是1时,结果为1,否则为0
print(12 & 8) #位与运算
结果:8
·两个操作数据的二进制表示,只有对应位都是0时,结果为0,否则为1
print(4 | 8)#位或运算
结果:12
·两个操作数据的二进制表示,同时为0或同时为1,结果为0,否则为1(相同为0,不同为1)
print(31 ^ 22)#位异或运算
结果:9
·操作数中对应的二进制数1修改为0,0修改为1
print(~123) #位取反运算
结果:-124
·将一个二进制数向左移动指定的位数,左边(高位端)溢出的位被丢弃,右边的空位用0补充
·左移位运算相当于乘以2的N次幂
print('左移位',2<<2) #左移位:将2向左移动2位
结果:8 (相当于2*2**2即2乘以2的2次幂)
print('左移位',2<<3) #左移位:将2向左移动3位
结果:16 (相当于2*2**3即2乘以2的3次幂)
·将一个二进制数向右移动指定的位数,右边(低位端)溢出的位被丢弃,左边(高位端)的空位端,如果最高位是0(正数)左侧空位填0,如果最高位是1(负数),左侧空位填1
·右移位运算相当于除以2的N次幂
print('右移位',8>>2) #右移位:将8向右移动2位
结果:2 (相当于8/2**2即8除以2的2次幂)
print('右移位',-8>>2) #右移位:将-8向右移动2位
结果:-2 (相当于-8/2**2即8除以2的2次幂)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。