n & 1 是判断整数奇偶性最高效的方法,利用二进制最低位语义,对正负数和零均可靠,比取模快1.5–3倍,适用于性能敏感场景如数组遍历、位图操作和快速幂。

直接用 n & 1 判断奇偶性,是位运算在底层最常用、最高效的实战技巧之一。它不依赖除法或取模,而是利用整数二进制表示的固有规律,把判断压缩到单条 CPU 指令级别。
为什么 & 1 能准确判断奇偶
所有整数在内存中都以补码形式存储,其二进制最低位(bit 0)具有明确语义:
- 最低位为 0 → 该数能被 2 整除 → 是偶数
- 最低位为 1 → 该数除以 2 余 1 → 是奇数
而 n & 1 的作用,就是“只保留 n 的最低位,其余位全清零”。因为 1 的二进制是 ...0001,按位与运算天然屏蔽高位,结果只能是 0 或 1,直接对应奇偶状态。
对比取模写法:不只是快,更是可靠
常见误区是认为 n % 2 == 0 更直观,但实际存在隐患:
- 在部分语言或编译环境下,负数取模结果可能为 -1(如 C++ 中 -3 % 2 == -1),导致逻辑出错
- n & 1 对正数、负数、零完全一致:-4 & 1 == 0(偶),-3 & 1 == 1(奇),0 & 1 == 0(偶)
- 无需类型转换或符号处理,CPU 执行周期更少,实测比取模快 1.5–3 倍(尤其在高频循环中)
在算法中落地使用的典型场景
不是所有地方都需强行替换,关键看是否处于性能敏感路径:
-
遍历数组做条件过滤:比如“只处理偶数索引位置的元素”,用
if (i & 1) continue;替代if (i % 2 != 0) -
位图/状态压缩计算:在用 int 表示布尔集合时,常需快速提取某位状态,
(mask >> i) & 1是标准写法 -
快速幂或二进制拆分逻辑:配合
n >>= 1遍历每一位,n & 1就是当前位值,避免字符串转二进制等开销
注意事项与边界提醒
这个技巧简洁有力,但需注意两点:
- 仅适用于整型变量(int、long 等)。浮点数或字符串需先转整型,否则行为未定义
- 在可读性优先的业务代码中,可加注释说明意图,例如:
// 利用位运算快速判奇偶,兼顾效率与维护










