JavaScript位操作及其简单应用

来源:互联网 发布:java continue label 编辑:程序博客网 时间:2024/06/07 07:18

原文链接


1. <<

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

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

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

2. >>

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

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

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

3. & (AND)

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

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

2 & 1//output 01 & 1//output 1

4. | (OR)

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

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

1 | 1//output 12 | 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 3console.log(b);//output 2

0 0