https://blog.csdn.net/xtj332/article/details/6639009
https://docs.python.org/zh-cn/3/library/stdtypes.html
整数类型的按位运算
按位运算只对整数有意义。 计算按位运算的结果,就相当于使用无穷多个二进制符号位对二的补码执行操作。
二进制按位运算的优先级全都低于数字运算,但又高于比较运算;一元运算 ~ 具有与其他一元算术运算 (+ and -) 相同的优先级。
此表格是以优先级升序排序的按位运算列表:
运算
结果
注释
x | y
x 和 y 按位 或
(4)
x ^ y
x 和 y 按位 异或
(4)
x & y
x 和 y 按位 与
(4)
x << n
x 左移 n 位
(1)(2)
x >> n
x 右移 n 位
(1)(3)
~x
x 逐位取反
注释:
负的移位数是非法的,会导致引发 ValueError。
左移 n 位等价于不带溢出检测地乘以 pow(2, n)。
右移 n 位等价于不带溢出检测地除以 pow(2, n)。
使用带有至少一个额外符号扩展位的有限个二进制补码表示(有效位宽度为 1 + max(x.bit_length(), y.bit_length()) 或以上)执行这些计算就足以获得相当于有无数个符号位时的同样结果。