位运算 (Bit Manipulation)
位运算(Bit Manipulation)
位运算是直接对整数的二进制位进行操作的算法技巧,常用于状态压缩、集合枚举、快速计算等。
原理与常见操作
- 与(&)、或(|)、异或(^)、取反(~)、左移(<<)、右移(>>)
- 利用位运算实现加法、判断奇偶、交换数、统计1的个数等
典型例题
1. 只出现一次的数字
def singleNumber(nums):
res = 0
for num in nums:
res ^= num
return res
2. 汉明重量
def hammingWeight(n):
count = 0
while n:
n &= n - 1
count += 1
return count
3. 颠倒二进制位
def reverseBits(n):
res = 0
for _ in range(32):
res = (res << 1) | (n & 1)
n >>= 1
return res
应用场景
- 状态压缩DP、子集枚举
- 位图、权限控制、哈希
- 快速判断奇偶、交换、计数