位運算符的用法 ----非(!),與(&),或(|),異或(^)
三種運算符均針對二進制
非!:是一元運算符。對一個二進制的整數按位取反,輸入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
自主進行圖解,加深理解,知識不是看會的是動手學會的!!!
如果還有實用的用處,請各路大佬留個言,求求求