n & 1 能判断奇偶是因为整数以二进制补码存储,最低位为0是偶数、为1是奇数;n & 1 仅保留最低位,结果为0或1,比取模、除法更高效且支持负数。

用位运算判断奇偶数,最高效写法是:n & 1 == 0 判断偶数,n & 1 == 1 判断奇数。
为什么 n & 1 能判断奇偶?
整数在计算机中以二进制补码形式存储,最低位(bit 0)决定奇偶: - 偶数的二进制末位一定是 0(如 2 → 10₂,4 → 100₂) - 奇数的二进制末位一定是 1(如 3 → 11₂,5 → 101₂) n & 1 相当于只保留 n 的最低位,其余位全清零,结果非 0 即 1,无需除法或取模,一步到位。
对比其他方式,优势明显
- n % 2 == 0:需执行除法指令,CPU 开销大,且对负数在某些语言中行为不一致(Java 中规范,但仍是算术运算)
- n / 2 * 2 == n:涉及两次运算+比较,低效且易受溢出干扰
- (n & 1) == 0:单条位与指令,硬件级支持,零分支预测开销,JIT 也极易内联优化
实际使用注意事项
- 适用于所有整型(int、long、short、byte),包括负数(Java 中 -3 & 1 == 1,正确判为奇数)
- 避免写成 n & 1 当布尔值直接用(如 if (n & 1)),虽语法合法,但可读性略差;推荐显式比较:if ((n & 1) == 1)
- 不要用于浮点数——位运算是整型专属,double/float 需先转整型再判断,但语义已不同
一个简洁可靠的工具方法
可封装为静态工具方法,兼顾清晰与性能:
public static boolean isEven(int n) { return (n & 1) == 0; }
public static boolean isOdd(int n) { return (n & 1) == 1; }










