Remove ads

在數位邏輯中,邏輯算符異或(英語:Exclusive or)是對兩個運算元的一種邏輯分析類型。與一般的邏輯或不同,當兩兩數值相同時為否,而數值不同時為真。[1]

文氏圖

對於命題 異或通常記作。在程式語言中,常寫作p ^ q

邏輯異或相當於邏輯不等價,或者說邏輯異或的邏輯非邏輯等價

Remove ads

真值表

異或運算真值表如下:

更多資訊 , ...
True True False
True False True
False True True
False False False
註:True:真,False:假。
關閉

無論怎樣改變同一行中的位置,真值表都是成立的。

Remove ads

其他表示

在數學和工程學中,常常用其他的邏輯運算子來表示異或算符。異或算符可以使用邏輯算符邏輯與邏輯或邏輯非表示為:

另外,異或算符可以被推廣,得到關於n個運算元的異或運算:n個運算元的n維異或的值為真若且唯若其中值為真的運算元有奇數個。

異或也可以被表示為:

異或還可以看作是邏輯等價關係的非運算。

Remove ads

性質

交換律

結合律

恆等律

歸零律

對合運算

Remove ads

與抽象代數的關係

儘管算子邏輯合取)與邏輯析取)是邏輯系統中最為常見的算子,但結構上,系統 and 只是么半群。因此,這兩個系統無法合成為一個更大的結構,比如半環

但是,帶有邏輯異或的系統是一個交換群。因此,算子的結合在集合上作用就產生了最基本的二元。這個域可以得出所有運用可以得到的結果,並且由於附帶了域的結構,可以進行代數上的進一步分析。

Remove ads

類似符號

更多資訊 名稱, 符號 ...
名稱 符號 Unicode 圖形 符號的來源
地球 🜨 U+2295 地球的天文符號 帶有赤道和一條經線的球體
關閉

應用

使用異或運算交換兩個 int 類型變數的數值

C/C++

void swap(int *a, int *b) {
    *a ^= *b;
    *b ^= *a;
    *a ^= *b;
}

Java

public void swap(int a, int b) {
    a ^= b;
    b ^= a;
    a ^= b;
}

C#

public void swap(ref int a,ref int b)
{
    a ^= b;
    b ^= a;
    a ^= b;
}

Rust

fn swap<'a, 'b>( num_a: &'a mut i32, num_b: &'b mut i32 ) {
    *num_a ^= *num_b;
    *num_b ^= *num_a;
    *num_a ^= *num_b;
}

雖然XOR運算可用來交換變數,但比起使用額外變數來交換變數的做法相比,效能反而比較差。

參考來源

參見

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.

Remove ads