「」和「」均至此。关于邏輯門，请见「**异或门**」。
 {\displaystyle {\begin{smallmatrix}p\oplus q\end{smallmatrix}}} 的文氏图 
在逻辑中，逻辑算符**互斥或**（英語：）是对两个运算元的一种邏輯分析类型。与一般的邏輯或不同，當兩兩數值相同時為否，而數值不同時為真。

对于命题 {\displaystyle p,q}，{\displaystyle p}异或{\displaystyle q}通常记作{\displaystyle p\operatorname {XOR} q}或{\displaystyle p\oplus q}。在编程语言中，常写作`p ^ q`。

逻辑异或相当于逻辑不等价，或者说逻辑异或的逻辑非是逻辑等价。

真值表
---

异或运算{\displaystyle p\oplus q}的真值表如下：

| {\displaystyle p} | {\displaystyle q} | {\displaystyle p\oplus q} |
| --- | --- | --- |
| True | True | False |
| True | False | True |
| False | True | True |
| False | False | False |
| 注：True：真，False：假。 |

无论怎样改变同一行中{\displaystyle p,q,p\oplus q}的位置，真值表都是成立的。

其他表示
----

在数学和工程学中，常常用其他的逻辑运算符来表示异或算符。异或算符可以使用逻辑算符逻辑与{\displaystyle \land }，逻辑或{\displaystyle \lor }和逻辑非{\displaystyle \lnot }表示为：

{\displaystyle {\begin{aligned}p\oplus q&=(p\land \lnot q)\lor (\lnot p\land q)=p{\overline {q}}+{\overline {p}}q\\&=(p\lor q)\land (\lnot p\lor \lnot q)=(p+q)({\overline {p}}+{\overline {q}})\\&=(p\lor q)\land \lnot (p\land q)=(p+q)({\overline {pq}})\end{aligned}}}
另外，异或算符可以被推广，得到关于*n*个运算元的异或运算：*n*个运算元的*n*维异或的值为真当且仅当其中值为真的运算元有奇数个。

异或也可以被表示为：

{\displaystyle p\oplus q=\lnot ((p\land q)\lor (\lnot p\land \lnot q))}
异或还可以看作是逻辑等价关系的非运算。

性质
--

**交换律**：{\displaystyle p\oplus q=q\oplus p}

**结合律**：{\displaystyle p\oplus (q\oplus r)=(p\oplus q)\oplus r}

**恒等律**：{\displaystyle p\oplus 0=p}

**归零律**：{\displaystyle p\oplus p=0}

**对合运算**：{\displaystyle p\oplus q\oplus q=p\oplus 0=p}

与抽象代數的關係
--------

尽管算子{\displaystyle \wedge }（逻辑合取）与{\displaystyle \lor }（逻辑析取）是逻辑系统中最为常见的算子，但结构上，系统{\displaystyle (\{T,F\},\wedge )} and {\displaystyle (\{T,F\},\lor )}只是幺半群。因此，这两个系统无法合成为一个更大的结构，比如环或半环。

但是，带有逻辑异或的系统{\displaystyle (\{T,F\},\oplus )}是一个交换群。因此，算子{\displaystyle \wedge }与{\displaystyle \oplus }的结合在集合{\displaystyle \{T,F\}}上作用就产生了最基本的二元域{\displaystyle F\_{2}}。这个域可以得出所有运用{\displaystyle (\land ,\lor )}可以得到的结果，并且由于附带了域的结构，可以进行代数上的进一步分析。

類似符號
----

| 名稱 | 符號 | 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運算可用來交換變數，但比起使用額外變數來交換變數的做法相比，效能反而比較差。

参考来源
----

1. ↑  Germundsson, Roger; Weisstein, Eric.. MathWorld. Wolfram Research.  [17 June 2015]. （原始内容存档于2015-09-05）.

参见
--

* 异或门
* 异或密码

|  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
逻辑联结词 |
| --- |
|  |
| 
* 恆真（{\displaystyle \top }）

 |  |
|  |
| 
* 与非（{\displaystyle \uparrow }）
* 反蕴涵（{\displaystyle \leftarrow }）
* 蕴涵（{\displaystyle \rightarrow }）
* 或（{\displaystyle \lor }）

 |
|  |
| 
* 非（{\displaystyle \neg }）
* 异或（{\displaystyle \oplus }）
* 双条件（{\displaystyle \leftrightarrow }）
* 命题

 |
|  |
| 
* 或非（{\displaystyle \downarrow }）
* 非蕴涵（{\displaystyle \nrightarrow }）
* 反非蕴涵（{\displaystyle \nleftarrow }）
* 与（{\displaystyle \land }）

 |
|  |
| 
* 恆假（{\displaystyle \bot }）

 |

 |