为什么这个结果“-9>> 2 = -3”

时间:2014-01-04 20:31:18

标签: javascript

为什么

9 >> 2 = 2

-9 >> 2 = -3

我的意思是,为什么不-2。

3 个答案:

答案 0 :(得分:1)

1001 (9) >> 2 = 10 (2)

2's compliment 9得到-9并做同样的事情:

0111 (-9) >> 2 = 01

2赞美结果,你得到11或3,所以答案是-3

答案 1 :(得分:1)

来自MDN上的bitwise operators page -

“所有位运算符的操作数都以大端顺序和二进制补码格式转换为带符号的32位整数。大端顺序意味着最高位(具有最大值的位位置)如果32位排列在一条水平线上,则是最左边的位。二进制补码格式意味着一个数字的负对应(例如5对-5)是所有数字的位被反转(按位数不是该数字) ,又名一个补码加一个。

答案 2 :(得分:0)

-1 = 11111111
-2 = 11111110
-3 = 11111101
-4 = 11111100
..
-8 = 11111000
-9 = 11110111

从而

-9 >> 2 = -3