参考:https://www.cnblogs.com/thtlovelife/p/8664404.html
https://blog.csdn.net/u010267996/article/details/79198279
注意js中数据是一个32位的数,其中第32位为符号位,正数为0,负数为1
(1) 带符号正数/负数的左移(<<)和带符号正数的右移(>>):符号位不变,右/左边低/高位补0,共计32位;
(2) 带符号负数的右移(>>):符号位不变,其它所有位求反加1,然后向右移位,再符号还是不变,其它所有位再次求反加1;
(3) 不带符号正数的右移(>>>):符号位不要,其它所有位求反再加1,然后位移;
举例1:

举例2:
-100无符号右移4位。
-100原码: 10000000 00000000 00000000 01100100
-100补码: 保证符号位不变,其余位置取反加1
11111111 11111111 11111111 10011100
无符号右移4位 : 在高位补0
00001111 11111111 11111111 11111001
即为所求:268435449

网友评论