JAVA 位運算符和位移運算符

java位運算符包括
&(與)       AND
|(或)       OR
^(異或)     XOR
~(非)       NOT

位移運算符包括
>>(右移)
<<(左移)
>>>(右移,左邊空出的位以0填充)
顧名思義,位運算符用於位運算,那就只能對整型或者字符型進行運算。而除了~(非)是一元運算符之外其他的都爲二元運算符。

所有位運算都會把值轉爲二進制進行運算

&(與)
  運算規則:0&0=0   0&1=0  1&0=0   1&1=1
  即:兩位同時爲1時,結果爲1,否則爲0

  

Java代碼

  1. int a=(3&5);   

  2. System.out.println(a);   

  3. System.out.println(Integer.toBinaryString(3));    

  4. System.out.println(Integer.toBinaryString(5));    

     int a=(3&5);
     System.out.println(a);
     System.out.println(Integer.toBinaryString(3)); 
     System.out.println(Integer.toBinaryString(5));



   結果打印爲
      1
     011
     101
    解析:3的二進制爲011,5的二進制爲101,與操作結果爲001。轉爲十進制是1。


|(或)
      運算規則: 0|0=0   0|1=1  1|0=1   1|1=1
     即:參加運算的兩個對象只要有一個爲1,其結果就爲1

   

Java代碼

  1. int a=(3|5);   

  2. System.out.println(a);   

  3. System.out.println(Integer.toBinaryString(3));    

  4. System.out.println(Integer.toBinaryString(5));    

      int a=(3|5);
      System.out.println(a);
      System.out.println(Integer.toBinaryString(3)); 
      System.out.println(Integer.toBinaryString(5));



   結果打印爲
     7
    011
    101

    解析:3的二進制位011,5的二進制位101。或操作結果爲111。轉爲10進製爲7


^(異或)
    運算規則:1^0=0   0^1=1   1^0=1   1^1=0
         即:參加運算的兩個對象,如果兩個個相應位爲“異”(值不同),則該位結果爲1,否則爲0

   

Java代碼

  1. int a=(3^5);   

  2. System.out.println(a);   

  3. System.out.println(Integer.toBinaryString(3));    

  4. System.out.println(Integer.toBinaryString(5));    

       int a=(3^5);
       System.out.println(a);
       System.out.println(Integer.toBinaryString(3)); 
       System.out.println(Integer.toBinaryString(5));


   
    結果打印爲
          6
       011
       101

    解析:3的二進制位011,5的二進制位101。或操作結果爲110。轉爲10進製爲6


~(非)
    運算規則:~1=0   ~0=1         
        即:對一個二進制數按位取反,即0變爲1,1變爲0

    ~運算符的優先級比算數運算符、關係運算符、邏輯運算符和其他運算符都高

<<(左移)
    將一個運算符對象的各二進制位全部左移諾幹位(左邊的二進制位丟棄,右邊補0)
     操作數每左移一位,相當於該數乘以2
   

Java代碼

  1. int a=(3<<2);   

  2. System.out.println(a);   

  3. System.out.println(Integer.toBinaryString(3));    

  4. System.out.println(Integer.toBinaryString(12));    

       int a=(3<<2);
       System.out.println(a);
       System.out.println(Integer.toBinaryString(3)); 
       System.out.println(Integer.toBinaryString(12));


   
    結果打印爲
         12
        11
        1100

    解析:此運算符的意思就是把3的二進制位全部左移兩位,右邊補2個0。3的二進制位11,左移兩位後,右邊補2個0就是1100。1100轉爲10進製爲12。
     說到底左移操作就相當於2的2次方×3。 每左移1位次方就增1


>>(右移)
將一個數的各二進制位全部右移諾幹位,正數左補0,負數左補1,右邊丟棄。
操作數每右移一位,相當於該數除以2

Java代碼

  1. int a=(9>>1);   

  2. System.out.println(a);   

  3. System.out.println(Integer.toBinaryString(9));    

  4. System.out.println(Integer.toBinaryString(4));    

       int a=(9>>1);
       System.out.println(a);
       System.out.println(Integer.toBinaryString(9)); 
       System.out.println(Integer.toBinaryString(4));


   
    結果打印爲
         4
        1001
        100
    
    解析:9的二進制爲1001,右移1位後,左正數補0,右邊丟棄。結果爲 0100。轉爲10進制後爲4。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章