按位运算符

总结

运算符 符号
按位与 &
按位左移 <<
按位取反 ~
按位或 l
按位右移 >>
按位异或 ^
无符号右移 >>>

说明

按位与 &

result = expression1 & expression2
只有两个表达式的某一位都为1,结果的该位为1,否则,结果的位为0。

result = 0010&1011
expression1: 0010
expression2: 1011
result : 0010

按位左移 <<

result = espression1 << espression2
把表达式1的所有位向左移动 “espression2”个位数,左端移掉的位将被舍弃,空出的位将用0填充。

result = 14<<2 即14(二进制="" 00001110)="" 向左移动2位="" 00111000="" --="">即为 56
result = 56

按位取反 ~

result = ~espression
对一个表达式执行按位非操作,即取反

result = ~ 0110
result = 1001

按位或 |

result= espression1 | espression2
对两个表达式执行按位“或”,即只要任意表达式的位为1,则结果的该位为1,否则,结果该位为0。

result = 00101 | 10010
result = 10111

按位右移 >>

result = espression1 >> espression2
带符号右移表达式位,保持符号不变。把表达式1的所有位向右移动“espression2”个位,向右移出的位丢弃,左边空出的位用“espression1”的符号位填充。

-> 一个数的最高位即时符号位,正数为0,负数为1
result = -14>>2
-14的二进制数 11110010 右移两位 11111100, 右边丢弃,左边由符号位1填充
result= -4

按位异或 ^

result = espression1 ^ espression2
对两个表达式执行按位异或。即当且仅当只有一个表达式某位为1时,该位才为1,否则为0。

result = 0101^1100
result = 1001

无符号右移 >>>

result = expression1>>> espression2
右移表达式的位,不保留符号。即右移左边空出的位用0填充,移出右边的丢弃。(只对32位和64位有意义)

result = -14>>>2
-14的二进制数(11111111 11111111 11111111 11110010) 右移两位 00111100,右边丢弃,左边补0.(00111111 11111111 11111111 11111100)
result = 1073741820


[1]: 参考 http://www.php100.com/manual/Javascript/html/jsmsclist.htm

如果觉得对您有帮助,就扫我交个朋友吧!