Java 位運算(移位、位與、或、異或、非)

位運算是以二進制位爲單位進行的運算,其操作數和運算結果都是整型值。
位運算符共有7個,分別是:位與(&)、位或(|)、位非(~)、位異或(^)、右移(>>)、左移(<<)、0填充的右移(>>>)。
位運算的位與(&)、位或(|)、位非(~)、位異或(^)與邏輯運算的相應操作的真值表完全相同,其差別只是位運算操作的操作數和運算結果都是二進制整數,而邏輯運算相應操作的操作數和運算結果都是邏輯值。

位運算示例
運算符 名稱 示例 說明
& 位與 x&y 把x和y按位求與
| 位或 x|y 把x和y按位求或
~ 位非 ~x 把x按位求非
^ 位異或 x^y 把x和y按位求異或
>> 右移 x>>y 把x的各位右移y位
<< 左移 x<<y 把x的各位左移y位
>>> 右移 x>>>y 把x的各位右移y位,左邊填



public class Test {
	public static void main(String[] args) {
		// 1、左移( << )
		// 0000 0000 0000 0000 0000 0000 0000 0101 然後左移2位後,低位補0://
		// 0000 0000 0000 0000 0000 0000 0001 0100 換算成10進製爲20
		System.out.println(5 << 2);// 運行結果是20

		// 2、右移( >> ) 高位補符號位
		// 0000 0000 0000 0000 0000 0000 0000 0101 然後右移2位,高位補0:
		// 0000 0000 0000 0000 0000 0000 0000 0001
		System.out.println(5 >> 2);// 運行結果是1

		// 3、無符號右移( >>> ) 高位補0
		// 例如 -5換算成二進制後爲:0101 取反加1爲1011
		// 1111 1111 1111 1111 1111 1111 1111 1011
		// 我們分別對5進行右移3位、 -5進行右移3位和無符號右移3位:
		System.out.println(5 >> 3);// 結果是0
		System.out.println(-5 >> 3);// 結果是-1
		System.out.println(-5 >>> 3);// 結果是536870911

		// 4、位與( & )
		// 位與:第一個操作數的的第n位於第二個操作數的第n位如果都是1,那麼結果的第n爲也爲1,否則爲0
		System.out.println(5 & 3);// 結果爲1
		System.out.println(4 & 1);// 結果爲0

		// 5、位或( | )
		// 第一個操作數的的第n位於第二個操作數的第n位 只要有一個是1,那麼結果的第n爲也爲1,否則爲0
		System.out.println(5 | 3);// 結果爲7

		// 6、位異或( ^ )
		// 第一個操作數的的第n位於第二個操作數的第n位 相反,那麼結果的第n爲也爲1,否則爲0
		 System.out.println(5 ^ 3);//結果爲6 

		// 7、位非( ~ )
		// 操作數的第n位爲1,那麼結果的第n位爲0,反之。
		System.out.println(~5);// 結果爲-6 
	} 
}


發佈了22 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章