当前位置:首页 > Python > 正文

Python位运算符详解(从零开始掌握二进制按位操作)

在编程中,Python位运算符是一种直接对整数的二进制表示进行操作的强大工具。虽然初学者可能觉得它抽象难懂,但一旦掌握,你就能更高效地处理底层数据、优化算法,甚至在某些场景下显著提升程序性能。

Python位运算符详解(从零开始掌握二进制按位操作) Python位运算符 位运算教程 Python按位操作 二进制运算 第1张

什么是位运算?

计算机内部所有数据最终都以二进制(0 和 1)形式存储。位运算就是直接对这些二进制位进行操作。例如,数字 5 在二进制中是 101,而 3 是 011

Python 中的六种位运算符

Python 提供了以下六种位运算符:

  • &:按位与(AND)
  • |:按位或(OR)
  • ^:按位异或(XOR)
  • ~:按位取反(NOT)
  • <<:左移
  • >>:右移

1. 按位与(&)

只有当两个对应位都为 1 时,结果才为 1。

a = 5   # 二进制: 101b = 3   # 二进制: 011c = a & bprint(c)  # 输出: 1 (因为 101 & 011 = 001)

2. 按位或(|)

只要有一个对应位为 1,结果就为 1。

a = 5   # 101b = 3   # 011c = a | bprint(c)  # 输出: 7 (因为 101 | 011 = 111)

3. 按位异或(^)

当两个对应位不同时,结果为 1;相同时为 0。

a = 5   # 101b = 3   # 011c = a ^ bprint(c)  # 输出: 6 (因为 101 ^ 011 = 110)

4. 按位取反(~)

将每一位 0 变成 1,1 变成 0。注意:Python 使用补码表示负数,所以 ~x 等价于 -x - 1

a = 5   # 101b = ~aprint(b)  # 输出: -6# 因为 ~5 = -(5 + 1) = -6

5. 左移(<<)

将二进制数向左移动指定的位数,右侧补 0。相当于乘以 2 的 n 次方。

a = 5        # 101b = a << 2   # 左移2位 → 10100print(b)     # 输出: 20 (5 * 2² = 20)

6. 右移(>>)

将二进制数向右移动指定的位数,左侧补符号位(正数补0,负数补1)。相当于除以 2 的 n 次方(向下取整)。

a = 20       # 10100b = a >> 2   # 右移2位 → 101print(b)     # 输出: 5 (20 ÷ 2² = 5)

实际应用场景

虽然日常开发中不常直接使用位运算,但在以下场景非常有用:

  • 权限系统(如 Linux 文件权限用 3 位表示读、写、执行)
  • 压缩算法和加密算法
  • 嵌入式系统或性能敏感代码
  • 快速判断奇偶:n & 1 == 0 表示偶数

小结

通过本篇Python位运算符教程,你应该已经理解了六种基本位运算符的工作原理,并能读懂简单的位运算代码。记住,位运算教程的核心在于理解二进制逻辑,多练习就能熟练掌握。

无论你是学习算法、准备面试,还是深入理解计算机底层,掌握Python按位操作二进制运算都是不可或缺的技能。

提示:可以尝试在 Python 解释器中逐行运行上述代码,观察输出结果,加深理解。