JavaScript 位运算符的应用

位运算符(Bitwise operators)

运算符名称 用法 描述
按位与 a & b 在a,b的位表示中,每一个对应的位都为1则返回1,否则返回0。
按位或 a | b 在a,b的位表示中,每一个对应的位,只要有一个为1则返回1,否则返回0。
按位异或 a ^ b 在a,b的位表示中,每一个对应的位,两个不相同则返回1,相同则返回0。
按位取反 ~ a 反转a的每一个位。
左移位 a << b 将a的二进制串向左移动b位,右边移入0。
右移位 a >> b 把a的二进制串向右移动b位,丢弃被移出的所有位。
无符号右移位 a >>> b 把a的二进制串向右移动b位,丢弃被移出的所有位,并把左边空出的位都填充为0。

取整

a | 0 或者 a ^ 0 或者 a << 0 或者 a >> 0 相当于 parseInt(a)

2.35 | 0    // 2
-18.2 ^ 0   // -18
1.445 << 0  // 1
-3.14 >> 0  // -3
3.141 << 0 === parseInt(3.141)  // true

判断数值奇偶性

a & 1 相当于 a % 2

if (a & 1) {
  console.log(`${a}是奇数`)
} else {
  console.log(`${a}是偶数`)
}

判断数值正负性(局限于整数)

a >>> 0

if (a >>> 0 === a) {
  console.log(`${a}是正数`)
} else {
  console.log(`${a}是负数`)
}

判断两个数是否相等(局限于整数)

(a ^ b) === 0 相当于 a - b === 0

if (a ^ b) {
  console.log('a和b不相等')
} else {
  console.log('a和b相等')
}

交换两个数(局限于整数)

a ^= b; b ^= a; a ^= b 相当于 let c = a; a = b; b = c

let a = -1
let b = 99
a ^= b
b ^= a
a ^= b
console.log(a, b)   // 99 -1

乘法(局限于2的指数倍且操作数为整数)

a << b 相当于 a * 2 ** b

3 << 2  // 12
-5 << 1 // -10
34 << 2 === 34 * 2 ** 2 // true

你可能感兴趣的:(javascript)