Python 中提供了一组位运算符用于操作整数的二进制表示。以下是所有的位运算符及其功能:
-
按位与 (
&
): 对应位置都为1,则结果为1,否则为0。a = 5 # 二进制: 0101 b = 3 # 二进制: 0011 result = a & b # 结果: 0001 print(result) # 输出: 1
-
按位或 (
|
): 对应位置只要有一个为1,则结果为1,否则为0。a = 5 # 二进制: 0101 b = 3 # 二进制: 0011 result = a | b # 结果: 0111 print(result) # 输出: 7
-
按位异或 (
^
): 对应位置相同则为0,不同则为1。a = 5 # 二进制: 0101 b = 3 # 二进制: 0011 result = a ^ b # 结果: 0110 print(result) # 输出: 6
-
按位取反 (
~
): 对每个比特取反,0变1,1变0(结果是该数的补码)。a = 5 # 二进制: 0101 result = ~a # 结果: 1010 (在二进制补码表示中,这实际上是 -6) print(result) # 输出: -6
-
左移 (
<<
): 将左操作数的二进制表示向左移动右操作数指定的位数,右侧用零填充。a = 5 # 二进制: 0101 result = a << 1 # 结果: 1010 print(result) # 输出: 10
-
右移 (
>>
): 将左操作数的二进制表示向右移动右操作数指定的位数,左侧用符号位填充(对于有符号数)。a = 5 # 二进制: 0101 result = a >> 1 # 结果: 0010 print(result) # 输出: 2
以下是一个表格汇总了这些位运算符:
运算符 | 名称 | 示例 | 结果 |
---|---|---|---|
& | 按位与 | 5 & 3 | 1 |
` | ` | 按位或 | `5 |
^ | 按位异或 | 5 ^ 3 | 6 |
~ | 按位取反 | ~5 | -6 |
<< | 左移 | 5 << 1 | 10 |
>> | 右移 | 5 >> 1 | 2 |
示例代码
以下是一个示例代码,展示了所有位运算符的使用:
a = 5 # 二进制: 0101
b = 3 # 二进制: 0011
# 按位与
result_and = a & b
print(f"{a} & {b} = {result_and}") # 输出: 1
# 按位或
result_or = a | b
print(f"{a} | {b} = {result_or}") # 输出: 7
# 按位异或
result_xor = a ^ b
print(f"{a} ^ {b} = {result_xor}") # 输出: 6
# 按位取反
result_not = ~a
print(f"~{a} = {result_not}") # 输出: -6
# 左移
result_left_shift = a << 1
print(f"{a} << 1 = {result_left_shift}") # 输出: 10
# 右移
result_right_shift = a >> 1
print(f"{a} >> 1 = {result_right_shift}") # 输出: 2
这些位运算符在处理底层数据操作、二进制数据解析和某些算法优化中非常有用。