javascript位运算符直接操作32位整数二进制,高效用于判断、开关、掩码等场景:&提取位(如奇偶判断)、|设置位(如启用权限)、^翻转/交换/校验、~和~~快速取整与类型归一。

JavaScript 中位运算符直接操作 32 位整数的二进制表示,不经过浮点运算或类型转换开销,因此在判断、开关、掩码等场景下比常规逻辑或算术运算更快更轻量。
按位与(&):快速提取和校验特定位
常用于判断奇偶性、提取状态位、做掩码过滤。因为 & 是“有 0 则 0,全 1 才 1”,适合精准保留某几位。
- 判断奇偶:n & 1 === 1 表示奇数(只需看最低位是否为 1)
- 提取低 4 位:n & 0b1111(即 n & 15),屏蔽高位,只留末四位
- 检查标志位:比如权限掩码 flag & READ_PERMISSION,若结果非零说明已启用该权限
按位或(|):安全设置位而不干扰其他位
| 是“有 1 则 1”,适合向一个整数中“开启”某些位,同时保持其余位不变。
- 启用多个标志:flags |= READ_PERMISSION | WRITE_PERMISSION
- 确保最低位为 1(向上取奇):n | 1(如 4→5,6→7)
- 整数截断小数部分:n | 0 等价于 Math.trunc(n),且性能更高(尤其在循环中)
按位异或(^):高效翻转、交换与校验
^ 是“相同为 0,不同为 1”,天然支持对称操作,无临时变量即可完成关键逻辑。
- 翻转特定位:n ^ 0b1000 可切换第 4 位(0↔1),其余位不变
- 不借助临时变量交换两数:a ^= b; b ^= a; a ^= b(注意仅适用于整数且 a !== b)
- 简单校验和/去重:一组数连续异或,相同数会抵消(a ^ a = 0;0 ^ x = x),常用于找唯一出现的数
按位非(~)与双非(~~):快速取整与类型归一
~ 对整个 32 位取反,结果恒为 -(n + 1);而 ~~n 相当于 Math.trunc(n),是 JS 中最轻量的整数截断方式。
- ~~x 比 Math.floor(x) 或 parseInt(x) 更快,且对负数行为一致(都向零截断)
- 配合 indexOf 使用:~arr.indexOf(x) 等价于 arr.indexOf(x) !== -1(因 ~(-1) === 0,为 falsy)
- 将假值统一转为 0:~~null、~~undefined、~~false 都得 0,~~true 得 1
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











