概念:
位运算是一种在二进制层面操作数据的计算方式,它直接对整数的二进制位进行操作,因此执行效率极高。在 Python 中,位运算主要用于底层编程、数据加密、算法优化等场景。下面我将详细介绍 Python 中常用的位运算及其应用。
常见的位运算操作
1.按位与
- 规则:两个对应位都为 1 时,结果位才为 1,否则为 0。
a = 5 # 二进制: 0101
b = 3 # 二进制: 0011
print(a & b) # 结果: 1 (二进制: 0001)
-
应用:
- 清零特定位(如
num & 0xF0保留高 4 位)。 - 判断奇偶性:
num & 1 == 0则为偶数。
- 清零特定位(如
2.按位或
-
规则:两个对应位中有一个为 1 时,结果位即为 1。
-
示例:
a = 5 # 二进制: 0101 b = 3 # 二进制: 0011 print(a | b) # 结果: 7 (二进制: 0111) -
应用:
- 将特定位设置为 1(如
num | 0x01强制最低位为 1)。
- 将特定位设置为 1(如
3. 按位异或(^)
-
规则:两个对应位不同时,结果位为 1,相同则为 0。
-
示例:
a = 5 # 二进制: 0101 b = 3 # 二进制: 0011 print(a ^ b) # 结果: 6 (二进制: 0110) -
特性:
- 交换律:
a ^ b == b ^ a。 - 自反性:
a ^ a == 0,a ^ 0 == a。
- 交换律:
-
应用:
- 不使用临时变量交换两数:
a, b = a ^ b, a ^ b ^ b。 - 加密和校验(如奇偶校验位)。
- 不使用临时变量交换两数:
4. 按位取反(~)
-
规则:对所有位取反(0 变 1,1 变 0)。
-
示例:
a = 5 # 二进制: 0101 print(~a) # 结果: -6 -
计算逻辑:在补码表示中,
~x等价于-(x+1)。
5. 左移(<<)
-
规则:将二进制位向左移动指定位数,右边补 0。
-
示例:
a = 5 # 二进制: 0101 print(a << 2) # 结果: 20 (二进制: 010100) -
特性:左移
n位等价于乘以2^n,即a << n == a * (2**n)。
6. 右移(>>)
-
规则:将二进制位向右移动指定位数,左边补符号位(正数补 0,负数补 1)。
-
示例:
a = 5 # 二进制: 0101 print(a >> 1) # 结果: 2 (二进制: 0010) -
特性:右移
n位等价于整除2^n,即a >> n == a // (2**n)。
【代码练习】