>>之间有什么区别和>>> JavaScript中的运算符

时间:2012-01-17 09:27:31

标签: javascript bitwise-operators

在以下两种情况下,运行以下JavaScript代码都会显示63

  alert( 0xff >> 2 );
  alert( 0xff >>> 2 );

>>>>>之间有什么区别?他们的结果似乎是平等的。

3 个答案:

答案 0 :(得分:8)

>>是一个按位运算符,它将位移到右侧。右边的任何位都会丢失。

 8 = 1000
     ^-->1
   = 0000 = 0

>>>>>类似,但它是无符号的,这意味着它的范围从0到2 32 -1而不是+/- 2 31 -1。

要查看我的第一个语句的结果,让我们使用按位运算符来设置数字:

1.234 >> 0         =  1 // Ok, fraction lost
1.234 >>>0         =  1 // Ok, fraction lost
-1.23 >> 0         = -1 // Ok, fraction lost
-1.23 >>>0         = 4294967295 // (negative numbers are not within the range)

Math.pow(2,31) >> 0  = -2147483648 // 2^31 is out of range
Math.pow(2,31) >>> 0 = 2147483648

因此,当超出范围的上边界时,计算将继续在其较低范围,反之亦然(例如<<)。以下说明显示了从最低边界开始使用n = (n + 1) >> 0>>> 0时发生的情况。

n

答案 1 :(得分:1)

答案 2 :(得分:1)