JS 位运算

在JavaScript中,位运算是一种特殊的运算方法,它直接操作二进制表示的数值。位运算符包括按位与(&)、按位或(|)、按位非(~)、按位异或(^)等。这些运算符通常用于处理特定的位级别操作,例如权限控制、加密算法等。
1. 按位与(&)
按位与运算符(&)用于将两个数的每个位进行逻辑与操作。只有在两个操作数对应位都为1时,结果才为1,否则为0。
const a = 5; // 二进制为 0101
const b = 3; // 二进制为 0011
const result = a & b; // 二进制运算: 0101 & 0011 = 0001
console.log(result); // 输出1
2. 按位或(|)
按位或运算符(|)用于将两个数的每个位进行逻辑或操作。只要两个操作数对应位中有一个为1时,结果就为1,否则为0。
const a = 5; // 二进制为 0101
const b = 3; // 二进制为 0011
const result = a | b; // 二进制运算: 0101 | 0011 = 0111
console.log(result); // 输出7
3. 按位非(~)
按位非运算符(~)用于将一个数的每个位进行取反操作。
const a = 5; // 二进制为 0101
const result = ~a; // 二进制运算: ~0101 = 1010
console.log(result); // 输出-6
4. 按位异或(^)
按位异或运算符(^)用于将两个数的每个位进行逻辑异或操作。当两个操作数对应位不相同时,结果为1,否则为0。
const a = 5; // 二进制为 0101
const b = 3; // 二进制为 0011
const result = a ^ b; // 二进制运算: 0101 ^ 0011 = 0110
console.log(result); // 输出6
5. 位运算的应用
5.1. 判断奇偶数
通过位运算可以快速判断一个数是奇数还是偶数。奇数的二进制表示的最后一位是1,偶数的二进制表示的最后一位是0。因此,可以通过按位与操作判断最后一位是1还是0。
const num = 5;
if (num & 1) {
console.log(`{num} 是奇数`);
} else {
console.log(`{num} 是偶数`);
}
5.2. 交换两个数的值
通过按位异或运算可以交换两个数的值,而不需要借助临时变量。
let a = 5;
let b = 3;
a = a ^ b;
b = a ^ b;
a = a ^ b;
console.log(a, b); // 输出3 5
5.3. 位运算与逻辑运算的区别
位运算与逻辑运算有着明显的区别。位运算是直接对操作数的二进制位进行操作,而逻辑运算是对操作数的真值进行操作。
const a = 5; // 二进制为 0101
const b = 3; // 二进制为 0011
console.log(a & b); // 输出1,位运算结果为1
console.log(a && b); // 输出3,逻辑运算结果为true
结论
位运算是一种高效且常用的运算方式,在某些特定的场景中能够大大提升代码的性能和可读性。然而,在日常开发中并不是所有情况下都需要使用位运算,需要根据具体情况选择合适的运算方式。
极客笔记