n & 1 可判断奇偶:结果为1是奇数,0是偶数,因其只保留二进制最低位;而%2依赖除法、开销较大,&1是高效位运算,负数在补码下同样适用。

直接用 n & 1 就能判断奇偶:结果为 1 是奇数,为 0 是偶数。核心在于二进制最低位——所有整数的奇偶性只由它决定。
为什么 & 1 能判断奇偶
任意整数的二进制表示中,最低位(2⁰ 位)决定奇偶:
- 最低位是 1 → 整体 = 偶数部分 + 1 → 奇数(如 7 的二进制是 111,末位 1)
- 最低位是 0 → 整体全是 2 的倍数之和 → 偶数(如 8 的二进制是 1000,末位 0)
- 而数字 1 的二进制只有末位是 1,其余全为 0(如 32 位下是 ...0001)
- 所以 n & 1 实际只保留 n 的最低位,其他位全被“与”成 0
& 和 %2 的区别不只是写法
两者逻辑等价但底层机制不同:
- %2 是取余运算,依赖除法指令,涉及商、余数计算,开销略大
- &1 是纯位操作,CPU 通常一条指令完成,无分支、无除法,更快更轻量
- 对正数两者结果一致;对负数,多数语言(如 Java、C/C++)中 n & 1 仍可靠,因为补码表示下负奇数的最低位仍是 1(如 -3 的补码末位为 1)
实际使用时的注意事项
写法简洁,但需注意语境和可读性:
- 在条件判断中可直接写
if (n & 1)—— 非零即真,等价于奇数 - 避免写成
if ((n & 1) == true),布尔比较多余且易出错(true 在 C/Java 中不等于 1) - 若代码强调可读性或面向初学者,%2 更直观;性能敏感场景(如嵌入式、高频循环)优先 &1
- 不要混淆 &(位与)和 &&(逻辑与)——后者不支持位运算,且有短路特性










