Java 移位操作符
生活随笔
收集整理的這篇文章主要介紹了
Java 移位操作符
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如有理解錯誤的地方,希望大家能夠指正。
移位操作符在以前的開發中并沒有使用過,估計在日常的開發中也很少會用到,所以記錄下來,以后需要的時候方便查閱。
基本概念
Java里面的移位操作符總共有以下三種:左移操作符(<<)的作用是按照符號右邊指定的位數將符號左邊的被操作數向左移,低位補零。
有符號右移操作符(>>)的作用是按照符號右邊指定的位數將符號左邊的操作數向右移。若符號為正,則在最高位插入0,若符號為負則在最高位插入1.
無符號右移操作符(>>>)則無論正負,都在最高為插入0.
實驗驗證
左移操作符代碼.1
public static void main(String[] args) {int a = 1;for(int i=0;i<5;i++){System.out.println(Integer.toBinaryString(a<<i));}}結果
左移操作符代碼.2
public static void main(String[] args) {int a = 1;for(int i=29;i<34;i++){System.out.println(Integer.toBinaryString(a<<i));System.out.println(a<<i);}}結果
可以看出,左移操作符就是簡單的將操作符向左移,低位補零,直至最高為變成負數,然后又繼續循環移至第一位。
右移操作符代碼.1
public static void main(String[] args) {int a = 1073741824;for(int i=1;i<5;i++){System.out.println(Integer.toBinaryString(a>>i));System.out.println(a>>i);}}結果
右移操作符代碼.2
public static void main(String[] args) {int a = -1073741824;for(int i=1;i<5;i++){System.out.println(Integer.toBinaryString(a>>i));System.out.println(a>>i);}}結果
可以看出,有符號右移操作符操作負數時在高位補一。
無符號右移操作符代碼
public static void main(String[] args) {int a = -1073741824;for(int i=1;i<5;i++){System.out.println(Integer.toBinaryString(a>>>i));System.out.println(a>>>i);}}結果
可以看出,由于無符號右移操作符無論正負都在高位插入零,所以負數一旦被操作,最高為位即變為零,即變為正數。
tips
1、當對byte、short、char類型進行移位操作時,將被轉換成int類型。 2、當對long類型進行移位操作時,結果還是long。 3、移位操作符可與賦值操作符(=)組合使用(<<=或>>>=等)。 4、當對byte、short等進行<<=或>>=等操作時,可能會出現問題,因為byte等類型先被轉換成了int類型再賦值給原來的類型,賦值時會被截斷。總結
以上是生活随笔為你收集整理的Java 移位操作符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 路由器刷php,【图片】【经验分享】路由
- 下一篇: 不要浪费时间去写所谓的完美代码