JavaScript位操作及其简单应用

原文链接


1. <<

左移,即按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

数学意义:在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。

1 << 1
//output 2
1 << 2
//output 4

2. >>

右移,即按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。

数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。

4 >> 1
//output 2
4 >> 2
//output 1

3. & (AND)

与,即按二进制形式将所有的数字与目标数字按位进行与操作。

常见用法:通常用于二进制的取位操作,例如:一个数字&1,如果结果为0则为偶数,如果为1则为奇数。

2 & 1
//output 0
1 & 1
//output 1

4. | (OR)

或,即按二进制形式将所有的数字与目标数字按位进行或操作。

常见用法:通常用于二进制数字的无条件赋值。例如:一个数字|1,相当于与获取与当前数字最接近的奇数。

1 | 1
//output 1
2 | 1
//output 3

5. ~ (NOT)

非,即按二进制形式将所有数字取反。

常见用法:位运算 NOT 实质上是对数字求负,然后减 1,因此 25 变 -26。

~1
//output -2

6. ^ (XOR)

异或,即按二进制形式将所有数字与目标数字对比,只有两个数字不相同即只有一个数位存放的是1的时候返回1,如两个数字相同返回0.

常见用法:xor运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变。可以用于简单的加密,或交互数值操作。

var a = 2, b = 3;
a ^= b;
b = a ^ b;
a ^= b;
console.log(a);
//output 3
console.log(b);
//output 2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值