JavaScript位运算符共7个:&(按位与)、|(按位或)、^(按位异或)、~(按位非)、(有符号右移)、>>>(无符号右移),用于32位整数的二进制操作,适用于权限管理、取整优化、颜色处理、状态压缩等场景,需注意类型转换、负数行为及运算符优先级。
JavaScript的位运算符是直接对数字的二进制表示进行操作的一类运算符,它们把操作数当作32位有符号整数(补码形式),逐位进行逻辑或移位处理。虽然日常开发中用得不多,但在底层控制、性能敏感场景和特定算法中非常有用。
JavaScript支持以下7个位运算符:
左移动,右侧补0位运算不是炫技工具,它解决的是特定类型的问题:
flags & PERMISSION_EDIT
x >>> 0 可替代 Math.floor(x)(仅适用于正数);x 等价于 x * Math.pow(2, n),在某些循环或图形计算中更高效
red = color >> 16 & 0xFF
flags ^= FLAG_A 切换某个标志;用 flags |= FLAG_B 启用;用 flags & FLAG_C 检查是否启用位运算在JS中有一些容易踩坑的地方:
2147483647 + 1 变成 -2147483648)>> 和 >>> 对负数行为不同:-8 >> 1 是 -4,而 -8 >>> 1 是 2147483644(高位补0后当无符号数解释)3.9 | 0 得到 3,但 3.9 & 0xFF 也是 3,不是四舍五入a & b === c 实际等价于 a & (b === c),需加括号:(a & b) === c