Skip to main content

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。

位运算常见于底层编程、权限标志、协议处理等场景。普通初学者写成绩计算、购物结算时,通常使用不到它们。