n & 1 可极速判断整数奇偶性:结果为1是奇数,为0是偶数;原理是二进制最低位决定奇偶,而1的二进制仅末位为1,按位与后仅保留该位,无需除法、支持负数、效率远超%2。
直接用 n & 1 就能极速判断整数奇偶性——结果为 1 是奇数,为 0 是偶数。原理简单:所有整数在二进制中,最低位(最右位)决定奇偶——是 1 就奇,是 0 就偶;而数字 1 的二进制只有这一位为 1,其余全 0,按位与后其他位全被“屏蔽”,只剩末位参与运算。
因为按位与的规则是“同为 1 才得 1,其余为 0”。拿 1 做掩码(即只保留最低位),相当于对任意整数做一次“末位快照”:
注意运算符优先级:& 比 == 和 != 低,不加括号容易出错。正确写法如下:
if (n & 1) 或 if ((n & 1) == 1)
if ((n & 1) == 0) 或 if (!(n & 1))
if (n & 1 == 1)——这等价于 if (n & (1 == 1)),即 if (n & 1),虽巧合成立但逻辑混乱,不可靠取模运算(n % 2)需执行除法指令,涉及商、余数计算;而 n & 1 是单条位操作指令,在 CPU 级别一个周期就能完成。实测在高频循环中,速度提升可达 3–4 倍,尤其在嵌入式、高频交易或图形渲染等性能敏感场景中优势明显。
适用。现代主流语言(C/C++/Java/Python/JS 等)均采用补码表示负数,而负奇数的补码末位仍是 1(如 -3 的 8 位补码是 11111101),所以 -3 & 1 仍得 1。无需额外处理符号位,天然兼容。