1. 程式人生 > >java學習之旅-5

java學習之旅-5

print out 簡單 代碼 接下來 補充 移動 簡單的 直觀

說了幾個簡單的位運算符,接下來看看稍微復雜點的另外三個吧:

<<:

將操作數的二進制碼整體左移指定位數,左移之後的空使用‘0’來補充。剛接觸這個所謂的“移位操作”,不一定能理解二進制碼整體移動指定位數是什麽意思,所以下面用代碼直觀地表示一下:

System.out.println(2 << 3);//表示2的二進制碼整體左移3位,結果為16。
2的二進制:00000000_00000000_00000000_00000010
移位後的二進制:00000_00000000_00000000_00000010
左移之後,右端缺少3位,使用‘0’來補充空位,結果如下:
16的二進制:00000_00000000_00000000_00000010000

>>:

將操作數的二進制碼整體右移指定位數,右移之後的空使用‘符號位’來補充。同樣地也以代碼來解釋:

System.out.println(16 >> 3);//表示16的二進制代碼整體右移3位,結果為2。
16的二進制:00000_00000000_00000000_00000010000
移位後的二進制:00000_00000000_00000000_00000010
右移之後,左端缺少3位,使用符號位(正數為‘0’,負數為‘1’)來補充空位,結果如下:
2的二進制:00000000_00000000_00000000_00000010

>>>:

將操作數的二進制碼整體右移指定位數,右移之後的空位使用‘0’來補充(註意:沒有“<<<”!!!)。這個操作其實和“>>”一樣,只是無論操作的數為正或負,均使用‘0’來補充空位。

System.out.println(-16 >>> 3);//表示-16的二進制碼整體右移3位,結果為536870910。
-16的二進制:11111111_11111111_11111111_11110000
移位後的二進制:11111111_11111111_11111111_11110
右移三位之後,左端空缺三位,需要用‘0’來補充,結果如下:
536870910的二進制:00011111111_11111111_11111111_11110

java學習之旅-5