Python | 位运算
位运算(bitwise operations)是对整数在二进制位级别上的操作。在 Python 中,位运算符对数字的二进制表示进行操作。
Python 中的位运算符:
-
按位与(AND)
&- 对应位都为 1 时,结果才为 1。
例子:
a = 5 # 二进制:101 b = 3 # 二进制:011 result = a & b # 结果是 1,二进制:001 print(result) # 输出: 1 -
按位或(OR)
|- 对应位只要有一个为 1,结果就为 1。
例子:
a = 5 # 二进制:101 b = 3 # 二进制:011 result = a | b # 结果是 7,二进制:111 print(result) # 输出: 7 -
按位异或(XOR)
^- 对应位相同为 0,不同为 1。
例子:
a = 5 # 二进制:101 b = 3 # 二进制:011 result = a ^ b # 结果是 6,二进制:110 print(result) # 输出: 6 -
按位取反(NOT)
~- 对每一位进行取反,0 变 1,1 变 0。
- 由于 Python 使用的是二进制补码表示,取反后,负数的处理需要考虑补码的规则。
例子:
a = 5 # 二进制:101 result = ~a # 结果是 -6,二进制:...11111010(补码表示) print(result) # 输出: -6 -
左移(Shift Left)
<<- 将数字的二进制位向左移动指定的位数,右边补零。左移 n 位相当于将数字乘以
2^n。
例子:
a = 5 # 二进制:101 result = a << 1 # 结果是 10,二进制:1010 print(result) # 输出: 10 - 将数字的二进制位向左移动指定的位数,右边补零。左移 n 位相当于将数字乘以
-
右移(Shift Right)
>>- 将数字的二进制位向右移动指定的位数,左边补符号位(正数补 0,负数补 1)。右移 n 位相当于将数字除以
2^n。
例子:
a = 5 # 二进制:101 result = a >> 1 # 结果是 2,二进制:10 print(result) # 输出: 2 - 将数字的二进制位向右移动指定的位数,左边补符号位(正数补 0,负数补 1)。右移 n 位相当于将数字除以
位运算的应用:
-
权限控制:位运算常用于表示和检查某些标志位,特别是在权限控制中。
- 例如:如果你有一组权限
read=1, write=2, execute=4,可以使用位运算进行权限的组合与判断。
- 例如:如果你有一组权限
-
数据压缩:通过位运算来压缩数据,可以减少存储空间。
-
加密算法:某些加密算法使用位运算来增强加密强度。
-
图像处理:某些图像处理算法也会用到位运算来处理颜色通道、像素等数据。
总结:
位运算直接作用于整数的二进制表示,它们非常高效,适用于对整数进行低级的、高性能的处理。通常在需要优化性能或对底层硬件进行直接操作时使用。
查看16道真题和解析