java左移、右移、無符號右移


右移
System.out.println(-3>>1);
  結果是-2,為什么會是-2呢?下面我們來看一下.
System.out.println(Integer.toHexString(-3));

  得到-3的16進制為fffffffd(此為-3的補碼,計算機中負數用補碼表示).
轉換成2進制為1111 1111 1111 1111 1111 1111 1111 1101
右移一位為1111 1111 1111 1111 1111 1111 1111 1110,顯而易見此為-2補碼.


左移
System.out.println(-3<<1);左移相對來說比較簡單.
1111 1111 1111 1111 1111 1111 1111 1101左移一位為
1111 1111 1111 1111 1111 1111 1111 1010,其為-6的補碼.


無符號右移
System.out.println(-3>>>1);
1111 1111 1111 1111 1111 1111 1111 1101無符號右移,高位補0,
01111 1111 1111 1111 1111 1111 1111 1110,其為2147483646的原碼.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM