java中可用按位与(&)快速判断整数奇偶性及是否被2的幂整除:n & 1判奇偶;n & (k-1)判是否被k(k为2的幂)整除;非2的幂则不可用。

Java 中可以用按位与(&)快速判断一个整数的奇偶性,原理是利用二进制最低位的特性:偶数最低位为 0,奇数最低位为 1。而整除性(如是否被 4、8 整除)也可通过特定掩码的按位与来高效判断,前提是除数是 2 的幂。
判断奇偶性:用 n & 1
整数在二进制中,最低位(bit 0)决定奇偶:
- 若 n & 1 == 1,说明最低位是 1 → n 是奇数;
- 若 n & 1 == 0,说明最低位是 0 → n 是偶数。
比 n % 2 == 0 更快,不涉及除法指令,且对负数同样适用(Java 中负数补码表示,-3 & 1 仍得 1,正确判为奇数)。
判断是否被 4 整除:用 n & 3
因为 4 = 2²,对应二进制 100,所以能被 4 整除的数,最低两位必须全为 0。
掩码 3 的二进制是 11,n & 3 取出最低两位:
-
n & 3 == 0→ 最低两位为00→ n 能被 4 整除 - 例如:
12 & 3→1100 & 0011 = 0000 == 0→ 12 ÷ 4 = 3,成立 - 注意:
n需为非负或理解补码行为;对负数(如-4),-4 & 3在 Java 中也等于 0,逻辑一致
推广到其他 2 的幂:用 n & (k - 1)
当要判断 n 是否能被 k 整除,且 k 是 2 的正整数次幂(如 2, 4, 8, 16…)时:
- 取掩码
k - 1(其二进制是低位全 1,共 log₂k 位) - 计算
n & (k - 1) - 结果为 0 ⇔
n的低 log₂k 位全为 0 ⇔n是k的倍数 - 例如判断能否被 8 整除:用
n & 7(因为 7 = 0b111),24 & 7 == 0→ 成立
不能用于非 2 的幂的整除判断
按位与只适用于除数是 2 的幂的情况。比如判断是否被 3、5、6 整除,n & x 无法构造固定掩码得出确定结论,必须用模运算(n % d == 0)或其他算法。强行套用会得到错误结果——例如 n & 5 和能否被 5 整除完全无关。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











