按位操作符助你写出高效、优雅、不可思议的代码

一、什么是按位操作符,凭什么说它高效?

按位操作符,顾名思义,就是直接操作二进制位的运算符。相比普通的加减乘除直接对数字操作,按位运算对底层比特位动刀,用极低的“计算成本”达成惊艳的效果,比如数据加密、权限位、极致性能优化等。


二、重温基础:七大必杀技一看就会

操作符 名称 示例 结果 解释
& 按位与 AND 5 & 3 1 只有两位都为 1 才为 1
| 按位或 OR 5 | 3 7 有一个为 1 就是 1
^ 按位异或 XOR 5 ^ 3 6 相同为 0,不同为 1
~ 按位非 NOT ~5 -6 取反:0 为 1,1 为 0
<< 左移 5 << 1 10 二进制左移 n 位,相当于乘以 2 的 n 次方
>> 有符号右移 -8 >> 2 -2 右移,高位补原符号位,保留正负号
>>> 无符号右移 -8 >>> 2 1073741822 右移,高位永远补 0

三、爆款实用技巧&神操作案例

1. 急速整数取整(加速数值运算)

let num = 5.987;
let intNum = num | 0; // 得到5,效率惊人!

Math.floor() 快得多!

2. 权限控制一个数,管理 8 个权限只需一行代码

// 3 => 二进制 00000011,代表第0、1个权限有
let permissions = 3;
let hasRead = (permissions & 1) != 0; // 读权限
let hasWrite = (permissions & 2) != 0; // 写权限

3. 数据交换,不用中间变量

let a = 3, b = 6;
a = a ^ b;
b = a ^ b;
a = a ^ b;
// 结果:a=6, b=3

4. 牛 X:高效判断奇偶性!

let n = 5;
if (n & 1) {
  console.log("数字为奇数");
} else {
  console.log("数字为偶数");
}

简洁又高效!

5. 快速倍增/减半

let x = 7;
let y = x << 2; // 快速 x*4
let z = x >> 1; // 快速 x/2

四、进阶玩法:按位操作 x 算法优化

位掩码应用:批量开关控制

// 比如 0b1010 表示四盏灯(第1、3盏亮着)
let lampStatus = 0b1010;
// 只亮第2盏
lampStatus = lampStatus | 0b0010;

超级压缩存储:空间省到极致

  • 一组二进制的按位组合,能高效地存储大量布尔型数据!