本條目存在以下問題,請協助
改善本條目 或在
討論頁 針對議題發表看法。
此條目没有列出任何
参考或来源 。 (2018年12月5日)維基百科所有的內容都應該
可供查證 。请协助補充
可靠来源 以
改善这篇条目 。无法查证的內容可能會因為異議提出而被移除。
此條目需要精通或熟悉相关主题的编者参与及协助编辑。 (2013年10月25日)請
邀請 適合的人士
改善本条目 。更多的細節與詳情請參见
討論頁 。
p
⊕
q
{\displaystyle {\begin{smallmatrix}p\oplus q\end{smallmatrix))}
的文氏图 在数字逻辑 中,逻辑算符 互斥或 (英語:Exclusive or )是对两个运算元 的一种邏輯分析 类型。与一般的邏輯或 不同,當兩兩數值相同時為否,而數值不同時為真。[ 1]
对于命题
p
,
q
{\displaystyle p,q}
,
p
{\displaystyle p}
异或
q
{\displaystyle q}
通常记作
p
XOR
q
{\displaystyle p\operatorname {XOR} q}
或
p
⊕
q
{\displaystyle p\oplus q}
。在编程语言中,常写作p ^ q
。
逻辑异或相当于逻辑不等价,或者说逻辑异或的逻辑非 是逻辑等价 。
异或运算
p
⊕
q
{\displaystyle p\oplus q}
的真值表 如下:
p
{\displaystyle p}
q
{\displaystyle q}
p
⊕
q
{\displaystyle p\oplus q}
True
True
False
True
False
True
False
True
True
False
False
False
注:True:真,False:假。
无论怎样改变同一行中
p
,
q
,
p
⊕
q
{\displaystyle p,q,p\oplus q}
的位置,真值表都是成立的。
在数学和工程学中,常常用其他的逻辑运算符来表示异或算符。异或算符可以使用逻辑算符逻辑与
∧
{\displaystyle \land }
,逻辑或
∨
{\displaystyle \lor }
和逻辑非
¬
{\displaystyle \lnot }
表示为:
p
⊕
q
=
(
p
∧
¬
q
)
∨
(
¬
p
∧
q
)
=
p
q
¯
+
p
¯
q
=
(
p
∨
q
)
∧
(
¬
p
∨
¬
q
)
=
(
p
+
q
)
(
p
¯
+
q
¯
)
=
(
p
∨
q
)
∧
¬
(
p
∧
q
)
=
(
p
+
q
)
(
p
q
¯
)
{\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 维异或的值为真当且仅当 其中值为真的运算元有奇数 个。
异或也可以被表示为:
p
⊕
q
=
¬
(
(
p
∧
q
)
∨
(
¬
p
∧
¬
q
)
)
{\displaystyle p\oplus q=\lnot ((p\land q)\lor (\lnot p\land \lnot q))}
异或还可以看作是逻辑等价 关系的非运算。
交换律 :
p
⊕
q
=
q
⊕
p
{\displaystyle p\oplus q=q\oplus p}
结合律 :
p
⊕
(
q
⊕
r
)
=
(
p
⊕
q
)
⊕
r
{\displaystyle p\oplus (q\oplus r)=(p\oplus q)\oplus r}
恒等律 :
p
⊕
0
=
p
{\displaystyle p\oplus 0=p}
归零律 :
p
⊕
p
=
0
{\displaystyle p\oplus p=0}
对合运算 :
p
⊕
q
⊕
q
=
p
⊕
0
=
p
{\displaystyle p\oplus q\oplus q=p\oplus 0=p}
尽管算子
∧
{\displaystyle \wedge }
(逻辑合取 )与
∨
{\displaystyle \lor }
(逻辑析取 )是逻辑系统中最为常见的算子,但结构上,系统
(
{
T
,
F
}
,
∧
)
{\displaystyle (\{T,F\},\wedge )}
and
(
{
T
,
F
}
,
∨
)
{\displaystyle (\{T,F\},\lor )}
只是幺半群 。因此,这两个系统无法合成为一个更大的结构,比如环 或半环 。
但是,带有逻辑异或的系统
(
{
T
,
F
}
,
⊕
)
{\displaystyle (\{T,F\},\oplus )}
是一个交换群 。因此,算子
∧
{\displaystyle \wedge }
与
⊕
{\displaystyle \oplus }
的结合在集合
{
T
,
F
}
{\displaystyle \{T,F\))
上作用就产生了最基本的二元域
F
2
{\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運算可用來交換變數,但比起使用額外變數來交換變數的做法相比,效能反而比較差。
恆真 (
⊤
{\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 }
)