java左移、右移、无符号右移
右移
System.out.println(-3>>1);
結(jié)果是-2,為什么會是-2呢?下面我們來看一下.
System.out.println(Integer.toHexString(-3));
得到-3的16進制為fffffffd(此為-3的補碼,計算機中負數(shù)用補碼表示).
轉(zhuǎn)換成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的原碼.
轉(zhuǎn)載于:https://www.cnblogs.com/Alan0218/articles/8491749.html
總結(jié)
以上是生活随笔為你收集整理的java左移、右移、无符号右移的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分页,主要用于python django
- 下一篇: 节后综合症太痛苦,人工智能有“良方”