我們知道在Java中int類型占32位,可以表示一個正數,也可以表示一個負數。正數換算成二進制后的最高位為0,負數的二進制最高位為1
例如 -5換算成二進制后為:
1111 1111 1111 1111 1111 1111 1111 1011
對其進行無符號右移2位:
移位過程講解:
-5換算成二進制: 1111 1111 1111 1111 1111 1111 1111 1011
-5右移3位后結果為-1,-1的二進制為: 1111 1111 1111 1111 1111 1111 1111 1111 // (用1進行補位)
-5無符號右移3位后的結果 536870911 換算成二進制: 0001 1111 1111 1111 1111 1111 1111 1111
通過其結果轉換成二進制后,我們可以發現,正數右移,高位用0補,負數右移,高位用1補,當負數使用無符號右移時,用0進行部位(自然而然的,就由負數變成了正數了)
注意:這里說的是右移,高位補位的情況。正數或者負數左移,低位都是用0補。(自行測試)