n & 1 能判断奇偶性,因整数二进制末位为1是奇数、为0是偶数,与1按位与结果仅取决于最低位;推荐写法为(n & 1) == 0或!= 0,比n % 2更高效且支持负数。

用位运算符判断奇偶性,核心是看整数二进制表示的最低位:为 1 是奇数,为 0 是偶数。最高效的方式是使用按位与运算符 & 和数字 1。
为什么 n & 1 能判断奇偶?
因为所有整数在计算机中以二进制补码形式存储,而偶数的二进制末位一定是 0,奇数末位一定是 1。和 1(即二进制 ...0001)做按位与,结果只取决于 n 的最低位:
- 若
n是偶数,如6 & 1 → 110 & 001 = 000 → 0 - 若
n是奇数,如7 & 1 → 111 & 001 = 001 → 1
实际写法:简洁又安全
直接用 (n & 1) == 1 判断奇数,(n & 1) == 0 判断偶数。注意不要写成 n & 1 == 1(会因运算符优先级出错,== 优先级高于 &,等价于 n & (1 == 1) → n & true 编译不通过)。
推荐写法:
if ((n & 1) != 0) { /* n 是奇数 */ }if ((n & 1) == 0) { /* n 是偶数 */ }
相比 n % 2 == 0 的优势
位运算在底层直接操作比特,无需除法指令,执行更快、更轻量;对正数、负数、零都适用(Java 中负数补码表示,-3 & 1 仍得 1,-4 & 1 得 0),语义清晰且无取余符号歧义。
注意事项
该方法仅适用于整型(int、long、byte、short)。不适用于浮点数或包装类型未拆箱时(如 Integer 为 null 会 NPE)。若需兼容 null,先判空再运算。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











