JavaScript中的位运算直接对数字的二进制位进行操作,虽然日常业务里不常写,但在一些特定场景下能带来更简洁和高效的实现。下面介绍几种常见的实际应用。

判断数字的奇偶性
利用按位与 & 运算,数字和 1 做与操作,结果为 0 表示偶数,为 1 表示奇数。这是因为奇数的二进制末位一定是 1。
function isOdd(n) {
// 末位为1则是奇数
return (n & 1) === 1;
}
console.log(isOdd(3)); // true
console.log(isOdd(4)); // false
快速乘除以 2 的幂
左移 << 相当于乘以 2 的指定次方,右移 >> 相当于除以 2 的指定次方并向下取整。
let a = 5; console.log(a << 1); // 10,等价于 5 * 2 console.log(a >> 1); // 2,等价于 Math.floor(5 / 2)
不使用临时变量交换两个数
异或 ^ 满足相同为 0、不同为 1,利用这个特性可以原地交换变量。
let x = 10, y = 20; x = x ^ y; y = x ^ y; // 此时 y 变成原来的 x x = x ^ y; // 此时 x 变成原来的 y console.log(x, y); // 20 10
利用位运算做取整
连续两次按位非 ~ 或者单次双非,可以把数字的小数部分去掉,效果类似 Math.floor 对正数的处理。
let num = 12.89; console.log(~~num); // 12
权限与状态压缩
在权限系统中,可以把不同权限用不同的位表示,通过或运算合并、与运算校验。
const READ = 1; // 0001 const WRITE = 2; // 0010 const EXEC = 4; // 0100 let permission = READ | WRITE; // 拥有读和写 // 检查是否有写权限 console.log((permission & WRITE) !== 0); // true
小结
以上场景展示了 JavaScript 位运算在判断、计算、交换、取整以及状态管理上的实用价值。在性能敏感或需要压缩数据的场合,合理使用位运算能让代码更轻量。但也要注意可读性,团队项目中应适度添加注释说明意图。
JavaScript位运算bitwise_operations修改时间:2026-07-26 06:39:08