Python 中的位运算
Python 支持哪些位运算符?请举例说明位运算的实用场景。
回答
Yahuda
Python 位运算符:&(与)、|(或)、^(异或)、~(取反)、<<(左移)、>>(右移)
a, b = 5 (0b0101), 3 (0b0011)
print(a & b) # 1 (0b0001)
print(a | b) # 7 (0b0111)
print(a ^ b) # 6 (0b0110)
print(~a) # -6
print(a << 1) # 10 (0b1010)
print(a >> 1) # 2 (0b0010)
实用场景:
- 权限控制(标志位):
READ = 0b001; WRITE = 0b010; EXEC = 0b100
perm = READ | WRITE # 读写权限
perm & READ # 是否可读
- 判断奇偶:
n & 1比n % 2快 - 判断 2 的幂:
n > 0 and (n & (n-1)) == 0 - 位图/BitMap 压缩存储