JavaScript位运算符通过CPU原生指令在32位整数二进制层面操作,实现高效计算:&用于判断奇偶、提取低位、权限校验;|和^用于设置/翻转标志位及无临时变量交换;>>、>>>、~~替代除法与取整;~和^简化布尔判断与找唯一值。

JavaScript 中位运算符能实现高效计算,核心在于它绕过浮点运算和类型转换,直接在 32 位整数的二进制层面操作,由 CPU 原生指令支持,单周期完成。
用 & 快速提取和判断特定位
按位与(&)适合精准保留某些位,其余清零。常见高效用法:
- 判断奇偶:
n & 1——结果为 1 是奇数,0 是偶数;比n % 2 === 0更快,且对负数行为一致 - 提取低 N 位:
n & 0b1111(即n & 15)只留末 4 位,常用于颜色分量、状态截取 - 权限校验:
userFlags & READ_PERMISSION非零即表示拥有该权限,无需字符串或对象查找
用 | 和 ^ 安全设置与翻转状态
按位或(|)和异或(^)不破坏无关位,适合状态管理:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 启用标志位:
flags |= WRITE_PERMISSION | EXECUTE_PERMISSION,多标志一次置位 - 切换开关:
toggle ^= 1可在 0/1 间来回翻转,比三元表达式更简洁、无分支预测开销 - 交换整数(无临时变量):
a ^= b; b ^= a; a ^= b,仅限整数且a !== b
用 > 和 ~~ 替代乘除与取整
移位和双非是轻量级算术替代方案:
- 计算 2 的幂:
1 等价于Math.pow(2, n),但更快更安全(仅限非负整数 n) - 整数除以 2 的幂:
n >> 2相当于Math.floor(n / 4)(带符号右移),n >>> 2适用于无符号场景 - 快速截断小数:
~~x或x | 0效果同Math.trunc(x),性能远超parseInt或Math.floor
用 ~ 和 ^ 做布尔判断与去重校验
位运算可简化逻辑表达,减少函数调用:
- 数组包含判断:
~arr.indexOf(x)等价于arr.indexOf(x) !== -1,因为~(-1) === 0(falsy) - 找唯一值:
arr.reduce((acc, v) => acc ^ v, 0)——利用a ^ a === 0和0 ^ x === x,所有重复数抵消,只剩出现奇数次的元素 - 统一假值为 0:
~~null、~~undefined、~~false都得 0,~~true得 1
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










