【java】之位運算^,&,<<,>>,<<<,>>>總結

 

1.^(亦或運算) ,針對二進制,相同的爲0,不一樣的爲1spa

 

public static void main(String[] args) {
    System.out.println("2^3運算的結果是 :"+(2^3));
    //打印的結果是:   2^3運算的結果是 :1
}

 

2 =======>0010code

3 =======>0011blog

2^3就爲0001,結果就是1源碼

 

2.&(與運算) 針對二進制,只要有一個爲0,就爲0class

仍是上述的例子二進制

public static void main(String[] args) {
         System.out.println("2&3運算的結果是 :"+(2&3));
         //打印的結果是:   2&3運算的結果是 :2
     }

 

 

3.<<(向左位移) 針對二進制,轉換成二進制後向左移動3位,後面用0補齊static

public static void main(String[] args) {
         System.out.println("2<<3運算的結果是 :"+(2<<3));
         //打印的結果是:   2<<3運算的結果是 :16
     }

 

 

4.>>(向右位移) 針對二進制,轉換成二進制後向右移動3位,計算機

public static void main(String[] args) {
         System.out.println("2>>3運算的結果是 :"+(2>>3));
         //打印的結果是:   2>>3運算的結果是 :0
     }

 

 

5.>>>(無符號右移)  無符號右移,忽略符號位,空位都以0補齊移動

10進制轉二進制的時候,由於二進制數通常分8位、 16位、32位以及64位 表示一個十進制數,因此在轉換過程當中,最高位會補零。di

在計算機中負數採用二進制的補碼錶示,10進制轉爲二進制獲得的是源碼,將源碼按位取反獲得的是反碼,反碼加1獲得補碼

二進制的最高位是符號位,0表示正,1表示負。

>>>與>>惟一的不一樣是它不管原來的最左邊是什麼數,通通都用0填充。

——好比,byte是8位的,-1表示爲byte型是11111111(補碼錶示法)

b>>>4就是無符號右移4位,即00001111,這樣結果就是15。

下面看代碼

public static void main(String[] args) {
     System.out.println("16>>2運算的結果是 :"+((16)>>2));
     //打印的結果是:   16>>2運算的結果是 :4
}

public static void main(String[] args) {
         System.out.println("-16>>2運算的結果是 :"+((-16)>>2));
         //打印的結果是:   -16>>2運算的結果是 :-4
     }

public static void main(String[] args) {
         System.out.println("16>>>2運算的結果是 :"+((16)>>>2));
         //打印的結果是:   16>>>2運算的結果是 :4
     }

public static void main(String[] args) {
        System.out.println("-16>>>2運算的結果是 :"+((-16)>>>2));
        //打印的結果是:   -16>>>2運算的結果是 :1073741820
     }

 

 

可見正數作>>>運算的時候和>>是同樣的。區別在於負數運算

相關文章
相關標籤/搜索