標籤:print 符號 操作 位操作 strong 意思 移位 沒有 指定
說了幾個簡單的位元運算符,接下來看看稍微複雜點的另外三個吧:
<<:
將運算元的二進位碼整體左移指定位元,左移之後的空使用‘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