位運算符

概述java

  位運算符就是直接對二進制進行操做的運算符spa

 

主要有如下幾種:code

  <<blog

    左移class

    符號位參與移動,空位補0,被移除的最高位捨去。二進制

    通常正數每左移一位至關於原來的值*2數據

  >>static

    右移計算機

    符號位不參與移動移動

    當爲正數,空位補0,;當爲負數,空位補1

    通常正數每右移一位至關於原來的值/2

  >>>

    無符號右移

    符號位也參與移動,空位補0,被移除的捨去

 

二進制由0和1組成,通常的,0表明false,1表明true,因而按位運算至關於普通的邏輯運算了。

 

  &

    按位與

  |     

    按位或

  ~   

    按位取反

  ^

    按位異或

    異或有一個特色,就是a^b = c; 則a^c能獲得b;b^c = a;

 

首先操做的是二進制,是什麼形式的二進制呢?

  咱們知道java裏面數據是用二進制補碼的形式存儲的,也就是說操做的是數據的二進制補碼。

 

例子:

public class TestOperator3 {
    /*
         00000011  3<<
        00001100
        
        00000011  3>>
        00000001
        
        -3
        10000000 00000000 00000000 00000011
        11111111 11111111 11111111 11111100
        11111111 11111111 11111111 11111101
        
        11111111 11111111 11111111 11111101
        011111111 11111111 11111111 1111110
        
        11111110
        11111101
        10000010
        
        
        1表明true,0false
        &
        |
        ^
        ~(!)
        
        00000110 6&3
        00000011
        00000010 2
        
        00000110 6|3
        00000011
        00000111 7
        
        00000110 6^3
        00000011
        00000101 5
        
        注意:位運算符進行運算符號位也參與
        
        00000110 ~6
        11111001 11111000 10000111 -7
    
    
    
    */
    public static void main(String[] args) {

        
        /*
        i = 3<<2;
        System.out.println(i);
        i = 3>>1;
        System.out.println(i);
        i = 3>>>1;
        System.out.println(i);
        
        byte i = (byte)(-3>>>1);
        System.out.println(i);
        
        //2147483646
        //2147483646
        System.out.println(0b01111111111111111111111111111110);
        */
        
        
        
        System.out.println(6&3);
        System.out.println(6|3);
        System.out.println(6^3);
        
        System.out.println(~6);
        
        

        
    }
}

 

通常按位運算是速率最快的,由於計算機內是使用二進制進行運算的,而位運算直接操做的是二進制。

相關文章
相關標籤/搜索