1. 程式人生 > 其它 >位運算子的用法 ----非(!),與(&),或(|),異或(^)

位運算子的用法 ----非(!),與(&),或(|),異或(^)

位運算子的用法 ----非(!),與(&),或(|),異或(^)

三種運算子均針對二進位制

非!:是一元運算子。對一個二進位制的整數按位取反,輸入0則輸出1,輸入1則輸出0。

例:

0100	-(4) 	輸入
1011	-(11)		輸出

與&:二元運算子,兩個輸入。按位計算。輸入都是1則輸出1;否則輸出0;(一0得0)

通俗來講兩個都是1才是1.否則是0

	0100	-(4)	輸入1
	1011	-(11)	輸入2
 &	0000 -(0)	輸出

或|:二元運算子,兩個輸入。按位計算。輸入都是1則輸出1;否則輸出0;(一0得0)

通俗來講兩個只要有一個是1就是1.否則是0

	0100  -(4)	輸入1
	1011  -(11)輸入2
|	1111  -(15)輸出

異或^ :二元運算子。並不是獨立存在的位運算子,而是組合而成。可以用其他的運算子等價表示(相同為0,不同為1)
異或運算按位比較,當輸入的兩個位相同時輸出0,不相同時輸出

通俗來講兩個位相同時輸出0,不相同時輸出

例:將10101101左5位反轉
		10101101
		11111000	^
		0101101

異或的特性:
1、交換律 可任意交換運算因子的位置,結果不變

如:a^ b==b^a

2、結合律(即(a ^ b) ^ c == a^ (b^c))

3、對於任何數x,都有x^ x=0,x^0=x,同自己求異或為0,同0求異或為自己

4、自反性 A ^ B ^ B = A ^ 0 = A ,連續和同一個因子做異或運算,最終結果為自己
5、一個數同自己進行偶數次異或運算結果為0、
一個數同自己進行奇數次異或運算結果為本身。

用處

判斷奇偶數

7&1==1;判斷是否為奇數

7&1==0;判斷是否為偶數

圖解:


進行兩數互換

int a=5;
int b=10;
a=a^b^(b=a);
輸出後a=10,b=5

自主進行圖解,加深理解,知識不是看會的是動手學會的!!!

如果還有實用的用處,請各路大佬留個言,求求求