Java的位運算符詳解實例——與(&)、非(~)、或(|)、異或(^)

位運算符主要針對二進制,它包括了:“與”、“非”、“或”、“異或”。從表面上看似乎有點像邏輯運算符,但邏輯運算符是針對兩個關係運算符來進行邏輯運算,而位運算符主要針對兩個二進制數的位進行邏輯運算。下面詳細介紹每個位運算符。


 



1.與運算符

與運算符用符號“&”表示,其使用規律如下:

兩個操作數中位都爲1,結果才爲1,否則結果爲0,例如下面的程序段。

public class data13

{

public static void main(String[] args)

{

int a=129;

int b=128;

System.out.println("a 和b 與的結果是:"+(a&b));

}

}

運行結果

a 和b 與的結果是:128

下面分析這個程序:

“a”的值是129,轉換成二進制就是10000001,而“b”的值是128,轉換成二進制就是10000000。根據與運算符的運算規律,只有兩個位都是1,結果纔是1,可以知道結果就是10000000,即128。


 



2.或運算符

或運算符用符號“|”表示,其運算規律如下:

兩個位只要有一個爲1,那麼結果就是1,否則就爲0,下面看一個簡單的例子。

public class data14

{

public static void main(String[] args)

{

int a=129;

int b=128;

System.out.println("a 和b 或的結果是:"+(a|b));

}

}

運行結果

a 和b 或的結果是:129

下面分析這個程序段:

a 的值是129,轉換成二進制就是10000001,而b 的值是128,轉換成二進制就是10000000,根據或運算符的運算規律,只有兩個位有一個是1,結果纔是1,可以知道結果就是10000001,即129。


 



3.非運算符

非運算符用符號“~”表示,其運算規律如下:


如果位爲0,結果是1,如果位爲1,結果是0,下面看一個簡單例子。

public class data15

{

public static void main(String[] args)

{

int a=2;

System.out.println("a 非的結果是:"+(~a));

}

}


 



4.異或運算符

異或運算符是用符號“^”表示的,其運算規律是:

兩個操作數的位中,相同則結果爲0,不同則結果爲1。下面看一個簡單的例子。

public class data16

{

public static void main(String[] args)

{

int a=15;

int b=2;

System.out.println("a 與 b 異或的結果是:"+(a^b));

}

}

運行結果

a 與 b 異或的結果是:13

分析上面的程序段:a 的值是15,轉換成二進制爲1111,而b 的值是2,轉換成二進制爲0010,根據異或的運算規律,可以得出其結果爲1101 即13。




Java中的運算符(操作符)


    程序的基本功能是處理數據,任何編程語言都有自己的運算符。因爲有了運算符,程序員才寫出表達式,實現各種運算操作,實現各種邏輯要求。


   爲實現邏輯和運算要求,編程語言設置了各種不同的運算符,且有優先級順序,所以有的初學者使用複雜表達式的時候搞不清楚。這裏詳細介紹一下Java中的運算符。


    Java運算符很多,下面按優先順序列出了各種運算符。


 


 


優先級 運算符分類 結合順序 運算符




分隔符 左結合 .    []     ( )     ;      ,

一元運算符 右結合 !  ++     --     -   ~

算術運算符


移位運算符


左結合 *     /      %    +     -      <<   >>   >>>

關係運算符 左結合 <     >     <=   >=   instanceof(Java 特有)   = =  !=

邏輯運算符 左結合 ! &&  ||  ~  &  |  ^ 

三目運算符 右結合 布爾表達式?表達式1:表達式2

賦值運算符 右結合 =  *=     /=  %=   +=   -=    <<= >>= >>>=  &=  *=  |=

 


一、一元運算符


    因操作數是一個,故稱爲一元運算符。


運算符 含義 例子

- 改變數值的符號,取反 -x(-1*x)

~ 逐位取反,屬於位運算符 ~x

++ 自加1 x++

-- 自減1 x--

++x 因爲++在前,所以先加後用。

x++ 因爲++在後,所以先用後加。


注意:a+ ++b和a+++b是不一樣的(因爲有一個空格)。


  int a=10;

  int b=10;

  int sum=a+ ++b;

  System.out.println("a="+a+",b="+b+",sum="+sum);

運行結果是: a=10,b=11,sum=21


  int a=10;

  int b=10;

  int sum=a+++b;

  System.out.println("a="+a+",b="+b+",sum="+sum);

運行結果是:a=11,b=10,sum=20


n=10;

m=~n;

變量n的二進制數形式:                 00000000 00000000 00000000 00001010

逐位取反後,等於十進制的-11: 11111111 11111111 11111111 11110101 



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