JavaScript——&、|、^、~位运算
位运算顾名思义就是二进制的计算,需要将十进制换算成二进制在进行相关运算。在实际的开发中用到的时候不多,主要有以下两点:
-
需要将十进制在脑海里转成二进制,挺麻烦的。
-
在进行大的位数运算的时候可能会出问题,因为是计算二进制,第一位控制正负,有可能算的时候变成负数了。
&(与)位运算符
第一位 | 第二位 | 结果 |
---|---|---|
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
var a=1&5;//a=1;
从上面可以看出只有当所有的位都为1的时候,最后的结果才为1,1的二进制位1,5的二进制位101,只有最后一位结果会为1,所以最后结果为1。
|(或)位运算符
第一位 | 第二位 | 结果 |
---|---|---|
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
var a=1|6;//a=7;
|运算只要有一位为1,最后的结果就是1,1的二进制为1,6的二进制位110,最后结果为111,就是7。
^(异或)为运算符
第一位 | 第二位 | 结果 |
---|---|---|
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
var a=1^5;//a=4;
^运算符只要两个位不相同,结果就为1,1的二进制为1,5的二进制为101,最后的结果为100,就是4了。
~(非)位运算符
var a=~5;//a=-6;
~非运算其实就是把这个数取反再减去1。