一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

如何利用位运算符中的按位与操作极速判定整数的奇偶性

时间:2026-06-20 11:17:52 编辑:袖梨 来源:一聚教程网

n & 1 可极速判断整数奇偶性:结果为1是奇数,为0是偶数;原理是二进制最低位决定奇偶,而1的二进制仅末位为1,按位与后仅保留该位,无需除法、支持负数、效率远超%2。

直接用 n & 1 就能极速判断整数奇偶性——结果为 1 是奇数,为 0 是偶数。原理简单:所有整数在二进制中,最低位(最右位)决定奇偶——是 1 就奇,是 0 就偶;而数字 1 的二进制只有这一位为 1,其余全 0,按位与后其他位全被“屏蔽”,只剩末位参与运算。

为什么 &1 能准确反映末位状态

因为按位与的规则是“同为 1 才得 1,其余为 0”。拿 1 做掩码(即只保留最低位),相当于对任意整数做一次“末位快照”:

  • 奇数(如 7 → 1112):111 & 001 = 001 = 1
  • 偶数(如 12 → 11002):1100 & 0001 = 0000 = 0

实际编码中怎么写才安全

注意运算符优先级:& 比 == 和 != 低,不加括号容易出错。正确写法如下:

  • 判断奇数:if (n & 1)if ((n & 1) == 1)
  • 判断偶数:if ((n & 1) == 0)if (!(n & 1))
  • 避免写成 if (n & 1 == 1)——这等价于 if (n & (1 == 1)),即 if (n & 1),虽巧合成立但逻辑混乱,不可靠

比 %2 快在哪?

取模运算(n % 2)需执行除法指令,涉及商、余数计算;而 n & 1 是单条位操作指令,在 CPU 级别一个周期就能完成。实测在高频循环中,速度提升可达 3–4 倍,尤其在嵌入式、高频交易或图形渲染等性能敏感场景中优势明显。

负数也适用吗?

适用。现代主流语言(C/C++/Java/Python/JS 等)均采用补码表示负数,而负奇数的补码末位仍是 1(如 -3 的 8 位补码是 11111101),所以 -3 & 1 仍得 1。无需额外处理符号位,天然兼容。

热门栏目