<< —— 有符號左移
>> —— 有符號右移
<<< —— 無符號左移
>>> —— 無符號右移
無符號移位(>>>)和有符號移位(>>)的區別是:
有符號位移運算時如果數字為正數時位移后在前面補0,為負數時則在位移后在前面補1
例:
100<<2
4的二進制為
0110 0100
移除最后兩位
0110 01
在前面補兩個零
0001 1001
100>>2==25
無符號移位運算時(>>>)如果數字為正數時移位后在前面補0,若為負數時移位后在前面補1
100>>>2
100的二進制是
0110 0100
向右移2位后為
0110 01
在前面補0得二進制為
0001 1001
100>>>2==25
如果為-100
-100的二進制為
1111111111111111111111111111111111111111111111111111111111111100
移除最后兩位后
11111111111111111111111111111111111111111111111111111111111111
之后在前面補兩位
1111111111111111111111111111111111111111111111111111111111111111
-100>>>2==-1