1、介紹
移位操作符只可處理整數類型。
- << : 左移位操作符(i<<2),顧名思義,即在將整個字節向左移動n位(自己定義的),字節的低位則會補上n位0.
- :>> : 右移位操作符(i>>2),分兩種情況,一種是正數,一種是負數。有符號的字節,第一位表示正負,0代表正數,1代表負數
正數:高位插入n個0,
負數:高位插入n個1; - :>>>: 無符號的右移(i>>>2),無論正負,都將在高位插0
小結:左移位相當于*2的n次方,右移相當于/的n次方2。
2、舉例
public static void main(String[] args) {
int i = -1;
System.out.println(Integer.toBinaryString(i));
i>>>=10;
System.out.println(Integer.toBinaryString(i));
i = 15;
System.out.println(Integer.toBinaryString(i));
i>>=1;
System.out.println(Integer.toBinaryString(i));
}
打印結果如下:
11111111111111111111111111111111
1111111111111111111111
1111
111
說明:
Java中使用32bit保存Integer型,64bit保存Long型。對于int型的15,則會省略前面的0,所以打印1111;
3、byte和short類型
- byte :8bit,只占一字節
- short : 16bit,只占兩字節
特別說明:對于byte和short類型進行移位時候,會自動將byte和short裝換成32bit,再移位。移位完成后會將截斷成對應的位數,賦值給原來的類型
public static void main(String[] args) {
byte i = -1;
System.out.println(Integer.toBinaryString(i));
i>>>=10;
System.out.println(Integer.toBinaryString(i));
i = -1;
System.out.println(Integer.toBinaryString(i));
System.out.println(Integer.toBinaryString(i>>>10));
}
####結果如下:
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
1111111111111111111111