一、什么是按位操作符,凭什么说它高效?
按位操作符,顾名思义,就是直接操作二进制位的运算符。相比普通的加减乘除直接对数字操作,按位运算对底层比特位动刀,用极低的“计算成本”达成惊艳的效果,比如数据加密、权限位、极致性能优化等。
二、重温基础:七大必杀技一看就会
操作符 | 名称 | 示例 | 结果 | 解释 | |
---|---|---|---|---|---|
& | 按位与 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;
超级压缩存储:空间省到极致
- 一组二进制的按位组合,能高效地存储大量布尔型数据!
五、结语
如果你觉得这篇文章有用,记得点赞、收藏、分享,关注我查看更多前端干货!