6. 位运算符
七、位运算符
位运算符直接对整数的二进制位进行操作。对于刚学完 if 和算术运算符的初学者,可以先认识它们,不必马上深入底层原理。
| 运算符 | 名称 | 作用 | |---|---|---| | & | 按位与 | 对应位都为 1,结果位才为 1 | | | | 按位或 | 对应位至少有一个为 1,结果位就为 1 | | ^ | 按位异或 | 对应位不同时结果为 1 | | ~ | 按位取反 | 将整数的二进制位取反 | | << | 左移 | 二进制位向左移动 | | >> | 右移 | 二进制位向右移动 |
1. 按位与 &
a = 5 # 二进制:0101b = 3 # 二进制:0011print(a & b) # 1
对齐后逐位计算:
0101
& 0011
------
0001
结果为 1。
2. 按位或 |
print(5 | 3) # 7
0101
| 0011
------
0111
结果为 7。
3. 按位异或 ^
print(5 ^ 3) # 6
0101
^ 0011
------
0110
结果为 6。
注意:这里的 ^ 是按位异或,不是乘方。Python 的乘方运算符是 **。
4. 按位取反 ~
print(~5) # -6
为什么不是简单的 10 或 0?
Python 的整数采用无限精度整数语义,按位取反满足:
[ \sim x = -x - 1 ]
因此,~5 等于 -6。
5. 左移 << 和右移 >>
print(5 << 1) # 10print(5 >> 1) # 2
对于非负整数,左移一位相当于乘以 2,右移一位相当于整除 2。
位运算常见于底层编程、权限标志、协议处理等场景。普通初学者写成绩计算、购物结算时,通常使用不到它们。