js按位操作符 & | ^ ~

来源:互联网 发布:11年小牛夺冠数据 编辑:程序博客网 时间:2024/06/05 07:38
按位操作符操作对象被转变为32位二进制位):
&按位与,两个操作数相应的比特位都为1时,结果才为1,否则为0
比如:3 & 2 =>
0011
0010
--------
0010 => 2
结果为: 2

再比如:18 & 7 =>
1 0010
0 0111
---------
0 0010 => 2
结果为: 2

|:按位或,两个操作数相应的比特位至少有一个为1时,结果才为1,否则为0
比如:3 | 2 =>
0011
0010
--------
0011 => 3
结果为: 3

再比如:18 | 7 =>
1 0010
0 0111
---------
1 0111 => 23
结果为: 23

^:按位异或,两个操作数相应的比特位有且只有一个为1时,结果才为1,否则为0
比如:3 ^ 2 =>
0011
0010
--------
0001 => 1
结果为: 1

再比如:18 ^ 7 =>
1 0010
0 0111
---------
1 0101 => 21
结果为: 21

~:按位非,反转操作数的比特位
注意:因为要反转比特位,所以需要补满32位,而上述的三个操作(& | ^)都可以不需要补满32位因为不需要反码,并且对应操作位为0位的运算结果一定是0,所以只有~运算需要并且也必要补满32位
比如:
~2
=> 32位二进制位 0000 0000 0000 0000 0000 0000 0000 0010
=> 反转比特位 1111 1111 1111 1111 1111 1111 1111 1101
=> 32位首位为符号位,0正1负,所以反转之后的数字为一个负数,将负数的二进制数转换成负数,需要取其反码然后+1
=> 取反码 0000 0000 0000 0000 0000 0000 0000 0010
=> +1 0000 0000 0000 0000 0000 0000 0000 0011
=> 结果为 3 ,因为其是一个负数,所以最终结果为 -3

总结:
正数按位非操作,结果为正数+1取负,即 ~2 = -3; ~7 = -8; ~3124 = -3125;
负数按位非操作,结果为负数+1取正,即 ~-2 = 1; ~-7 = 6; ~-3124 = 3123;
-0为正数。
原创粉丝点击