Java的位移運算

public class Test { 
    public static void main(String[] args) { 
        // 一、左移( << ) 
        // 0000 0000 0000 0000 0000 0000 0000 0101 而後左移2位後,低位補0:// 
        // 0000 0000 0000 0000 0000 0000 0001 0100 換算成10進製爲20 
        System.out.println(5 << 2);// 運行結果是20 
 
        // 二、右移( >> ) 高位補符號位 
        // 0000 0000 0000 0000 0000 0000 0000 0101 而後右移2位,高位補0: 
        // 0000 0000 0000 0000 0000 0000 0000 0001 
        System.out.println(5 >> 2);// 運行結果是1 
 
        // 三、無符號右移( >>> ) 高位補0 
        // 例如 -5換算成二進制後爲:0101 取反加1爲1011 
        // 1111 1111 1111 1111 1111 1111 1111 1011 
        // 咱們分別對5進行右移3位、 -5進行右移3位和無符號右移3位: 
        System.out.println(5 >> 3);// 結果是0 
        System.out.println(-5 >> 3);// 結果是-1 
        System.out.println(-5 >>> 3);// 結果是536870911 
 
        // 四、位與( & ) 
        // 位與:第一個操做數的的第n位於第二個操做數的第n位若是都是1,那麼結果的第n爲也爲1,不然爲0 
        System.out.println(5 & 3);// 結果爲1 
        System.out.println(4 & 1);// 結果爲0 
 
        // 五、位或( | ) 
        // 第一個操做數的的第n位於第二個操做數的第n位 只要有一個是1,那麼結果的第n爲也爲1,不然爲0 
        System.out.println(5 | 3);// 結果爲7 
 
        // 六、位異或( ^ ) 
        // 第一個操做數的的第n位於第二個操做數的第n位 相反,那麼結果的第n爲也爲1,不然爲0 
         System.out.println(5 ^ 3);//結果爲6  
 
        // 七、位非( ~ ) 
        // 操做數的第n位爲1,那麼結果的第n位爲0,反之。 
        System.out.println(~5);// 結果爲-6  
    }  
}
相關文章
相關標籤/搜索