異或運算符"∧"也稱XOR運算符。它的規則是若參加運算的兩個二進位同號,則結果為0(假);異號則為1(真)。即 0∧0=0,0∧1=1, 1^0=1,1∧1=0。
相同為0,不相同為1
運算 說明
0 ^ 0=0,0 ^ 1=1 0異或任何數,其結果=任何數
1 ^ 0=1,1 ^ 1=0 1異或任何數,其結果=任何數取反
x ^ x=0 任何數異或自己,等於把自己置0
(1)使特定位翻轉
比如:01111010,想使其低4位翻轉,即1變為0,0變為1。可以將它與00001111進行∧運算,即
0111 1010
0000 1111
結果: 0111 0101
結果值的低4位正好是原數低4位的翻轉。要使哪幾位翻轉就將與其∧運算的該幾位置為1即可。這是因為原數中值為1的位與1進行∧運算得0,原數中的位值0與1進行∧運算的結果得1。
(2)實現兩個值的交換
通過按位異或運算,可以實現兩個值的交換,而不必使用臨時變量。例如交換兩個整數a=3,b=4的值,可通過下列語句實現:
a=a∧b;
b=b∧a;
a=a∧b;
0011 ---a =3
0100 ---b =4
-----------
0111----a =7
0100----b =4
-----------
0011-----b =3
0111------a ==7
0100----a ==3
#include <stdio.h> int main() { int a=3,b=4; printf("%d,%d\n",a,b); a=a^b; printf("%d,%d\n",a,b); b=b^a; printf("%d,%d\n",a,b); a=a^b; printf("%d,%d\n",a,b); getchar(); }
