歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java中的移位運算符

Java中的移位運算符

日期:2017/3/1 10:09:29   编辑:Linux編程

移位運算符是在數字的二進制形式上進行平移。主要有左移(<<)、帶符號右移(>>)以及無符號右移(>>>)。

  • 左移運算符(<<)的運算規則為:按二進制形式將數字左移相應位數,高位捨棄,低位補零。
  • 帶符號右移運算符(>>)的運算規則為:按二進制形式將數字右移相應位數,低位捨棄,高位正數補零,負數補1。
  • 無符號右移運算符(>>>)的運算規則為:按二進制形式將數字右移相應位數,低位捨棄,高位補零。
  1. int a=-8;
  2. System.out.println(a << 2);
  3. System.out.println(a >> 2);
  4. System.out.println(a >>> 2);
輸出結果為

-32

-2

1073741822

值得注意的移位運算其實可以看做對類型的位數取余後的移位。java中int是32位,long是64位。比如對int型的數字做左移40位的操作,與左移40%32=8位效果是相同的。若對int型做移位32*n的運算,則相當於什麼都沒做。

而對於byte、char以及short,在做移位運算時會自動類型轉換成int型。因此對於下面的代碼,輸出為8 8 8 8 0

  1. byte b=8;
  2. short s=8;
  3. char c=8;
  4. int i=8;
  5. long l=8;
  6. System.out.println(b >> 32);
  7. System.out.println(s >> 32);
  8. System.out.println(c >> 32);
  9. System.out.println(i >> 32);
  10. System.out.println(l >> 32);
Copyright © Linux教程網 All Rights Reserved