总结
运算符 | 符号 |
---|---|
按位与 | & |
按位左移 | << |
按位取反 | ~ |
按位或 | 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 = 562>
按位取反 ~
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