Java中移位操作运算符的理解
java中的移位運算符有三種:
1、 <<: 左移
2、 >>: 右移
3、 >>>: 無符號右移
使用方法:左移就是將左邊的操作數(shù)在內(nèi)存中的二進制數(shù)據(jù)左移指定的位數(shù),左邊移空的部分補零,右移:如果最高位是0,空位就填0,如果最高位是1,空位就填1。無符號右移無論最高位是什么,空位都補零。
數(shù)據(jù)在內(nèi)存中以補碼的形式存儲
左移和右移的數(shù)學意義:
對于左移,對于整型a,? a<<n=a*2^n(前提是結(jié)果在整型的范圍之內(nèi)),對于右移 正的整型a,? a>>n=a/2^n,對于負的整型a,a>>n=-(|a|/2^n+1);
為什么對于右移,正數(shù)和負數(shù)的結(jié)果不一樣呢?
我們可以看一個例子:
?
package sort;public class sort1 {public static void main(String[] args) {// TODO Auto-generated method stubint a=-123;System.out.println("原二進制位:"+Integer.toBinaryString(a));int b=a>>2;System.out.println("右移兩位結(jié)果為:"+b);System.out.println("右移后二進制位:"+Integer.toBinaryString(b));int c=123;System.out.println("原二進制位:"+Integer.toBinaryString(c));int d=c>>2;System.out.println("右移后的結(jié)果為:"+d);System.out.println("右移后二進制位:"+Integer.toBinaryString(d));} }?
?
運行結(jié)果為:
?
對于123,其二進制數(shù)為0? 1111011,右移兩位相當于把0? 111000右移兩位,而0? 111000的十進制為120,所以結(jié)果為120/4=30;
對于-123,其二進制數(shù)為1? 0000101,右移兩位相當于把1? 0000100右移兩位,而1? 0000100的十進制為-124,所以結(jié)果為-124/4=-31。
?
轉(zhuǎn)載于:https://www.cnblogs.com/qingergege/p/5687306.html
總結(jié)
以上是生活随笔為你收集整理的Java中移位操作运算符的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: org.apache.jasper.Ja
- 下一篇: Java 单测 回滚