js中的>>表示有符号位移,>>>表示无符号位移,当操作一个正数的时候,两者无差别:

因为10的二进制是1010,向右移动一个就是101,十进制中代表的是5。

但是如果对于负数,那么就相差非常大了:

-2在计算机中是以补码存在(补码=反码+1),也就是11111111111111111111111111111110(一共32位,4个字节)。

1.如果是>>1,表示有符号的位移,右边移去了一个0,左边补充一个1(正数补充0,负数补充1),变成11111111111111111111111111111111,十进制为-1。

2.如果是>>>1,表示无符号的位移,右边一去了一个0,左边补充一个0(无视正数,负数,一直补充0),变成01111111111111111111111111111111,现在变成了一个正数(首位为0表示正数,1表示负数),就是2147483647。

其他文章

0
我要评论

评论

返回
×

我要评论

回复:

昵称:(昵称不超过20个字)

图片:

提交
还可以输入500个字