定義

Exclusive OR(異-或運算)
異或(xor)是一個數學運算子。它應用於邏輯運算。異或符號為“^”。其運演算法則為:
a^b=(a' and b) or (a and b')(a'為非a)。
真異或假的結果是真,假異或真的結果也是真,真異或真的結果是假,假異或假的結果是假。就是說兩個值不相同,則異或結果為真。反之,為假。 不同為1,相同為0.
異或也叫半加運算,其運演算法則相當於不帶進位的二進位制加法:二進位制下用1表示真,0表示假,則異或的運演算法則為:0異或0=0,1異或0=1,0異或1=1,1異或1=0(同為0,異為1),這些法則與加法是相同的,只是不帶進位。
異或略稱為XOR、EOR、EX-OR
程式中有三種演運算元:XOR、xor、 ^。
使用方法如下
z = x ^ y;
z = x xor y;

編輯本段異或運演算法則

1. a ^ a = 0
2. a ^ b = b ^ a
3. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;
4. d = a ^ b ^ c 可以推出 a = d ^ b ^ c.
5. a ^ b ^ a = b.
6.若x是二進位制數0101,y是二進位制數1011
則x^y=1110
只有在兩個比較的位不同時其結果是1,否則結果為0
即“相同為0,不同為1”!
輸入
運算子
輸入
結果
1
^
0
1
1
^
1
0
0
^
0
0
0
^
1
1

編輯本段異或邏輯

異或邏輯的真值表如圖1所示,其邏輯符號如圖2所示。異或邏輯的關係是:當AB不同時,輸出P=1;當AB相同時,輸出P=0。“⊕”是異或運算子號,異或邏輯也是與或非邏輯的組合,其邏輯表示式為:
P=A⊕B

  
圖1可知,異或運算的規則是
0⊕0=0,0⊕1=1
1⊕0=1,1⊕1=0
口訣:相同取0,相異取1
事實上,XOR 在英文裡面的定義為either one (is one), but not both, 也即只有一個為真(1)時,取真(1)。

編輯本段作用

在計算機中普遍運用,異或(xor)的邏輯符號^ (Shift + 6)或一個圓圈裡面增加一個+(⊕)或者·.形象表示為:
真^假=真
假^真=真
假^假=假
真^真=假
或者為:
True ^ False = True
False ^ True = True
False ^ False = False
True ^ True = False
部分計算機語言用1表示真,用0表示假,所以兩個位元組按位異或如下
00000000
異或
00000000
=
00000000
============我是分界線1============
下面是兩個二進位制數值進行異或計算:
11111111
異或
00000000
=
11111111
============我是分界線2============
現實中用的都是十進位制的數值,那麼我們來看一看兩個十進位制數值是怎麼進行異或計算:
5 異或 2 = ?
1.進行異或計算前會把數值都轉換為二進位制的:
5和2轉為二進位制分別為:0101 、0010
0101
異或
0010
=
0111
2.再把結果 0111 轉換為十進位制的:7
3.所以 5 異或 2 = 7 ,而不是大家想像的5和2不同,則為1(真).

編輯本段異或的巧妙應用

C語言中若需要交換兩個變數的值,除了通常使用的借用中間變數進行交換外,還可以利用異或,僅使用兩個變數進行交換,如:
a=a^b;//賦值
b=b^a;//賦值
//b^a=b^(a^b)=b^a^b=a;//等號等於的意思
a=a^b;//賦值
//a^b=a^b^a=b;等號是等於的意思
這樣就完成了a與b的交換。