您的位置:首页 > Web前端 > JavaScript

JavaScript位操作及其简单应用

2015-06-04 21:17 423 查看
原文链接

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: