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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值