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

public static void main(String[] args) {
		// 二進制10 = 0000 1010
		int a = 10;
		// 二進制1 =  0000 0001
		int b = 1;
		
		int c = a ^ b;// 異或運算之後爲0000 1011 = 11(相同取0,不同取1)
		System.out.println(c);
		
		int d = a << 2; // 轉換成二進制後,左移兩位 0010 1000
		System.out.println(d);// 2的五次方加上2的三次方(32 + 8 = 40)
		
		int f = a & b;// 轉換後0000 0000(都是1取1,否則取0)
		System.out.println(f);
		
		int g = a | b; // 或運算之後二進制數爲0000 1011 (出現1就取1,否則是0)
		System.out.println(g);// 輸出 8 + 2 + 1 = 11
		
	}


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

 


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。


文章轉載:http://blog.csdn.net/vebasan/article/details/6193916

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