n & 1 能判断奇偶,因为整数二进制最低位决定奇偶性:偶数末位为0、奇数末位为1;n & 1 仅保留最低位,结果为0即偶数、为1即奇数,且对正负整数均可靠。

JavaScript 中可以用按位与运算符 & 快速判断一个整数是奇数还是偶数:对数字和 1 执行按位与操作,结果为 1 表示奇数,结果为 0 表示偶数。
为什么 n & 1 能判断奇偶?
因为整数在二进制中,最低位(最右边)决定了奇偶性:
- 偶数的二进制末位一定是
0(如2 → 10₂,4 → 100₂) - 奇数的二进制末位一定是
1(如3 → 11₂,7 → 111₂) -
n & 1相当于只保留n的最低位,其余位全部清零(因为1的二进制只有末位是 1,其余全是 0)
实际用法示例
可以直接用于条件判断或返回布尔值:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
function isOdd(n) {
return (n & 1) === 1; // 奇数返回 true
}
function isEven(n) {
return (n & 1) === 0; // 偶数返回 true
}
console.log(isOdd(5)); // true (5 & 1 → 1)
console.log(isOdd(8)); // false (8 & 1 → 0)
注意事项
该方法适用于安全整数范围内的**整数**,但需注意几点:
- 对负数也有效(JavaScript 使用补码表示,
-3 & 1仍得1,-4 & 1得0) - 对非整数(如
3.7)会先自动转为整数(取整),3.7 & 1 → 3 & 1 → 1,所以建议先确保输入是整数 - 比
n % 2 === 1略快(位运算更底层),但现代引擎优化后性能差异极小,可读性上按需选择
和取模方式对比
常见写法还有 n % 2 === 0 判断偶数。区别在于:
-
n & 1是位运算,只看二进制末位,不涉及除法,逻辑更直接 -
n % 2是取模运算,对负数结果依赖语言规范(JavaScript 中-3 % 2 → -1),判断奇数需写成n % 2 !== 0 - 两者都可,
& 1更贴近底层原理,适合理解位运算本质
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










