逻辑学中的一种连接词,被称为“异或”,或互斥析取。当且仅当两个条件中恰好一个为真(但不是两者都为真)时,它才为真。异或运算没有标准符号,但有时表示为 (本文) 或
(Simpson 1987, pp. 539 和 550-554)。
读作 “
aut
”,其中 “aut” 在拉丁语中表示 “或,但不是两者都”。XOR 门的电路图符号如上所示。在集合论中,
通常被称为对称差。XOR 函数的实现方式为Xor[predicate1, predicate2, ...].
二元 XOR 运算 与非等价
相同。
可以使用 AND 和 OR 门实现为
(1)
| |||
(2)
|
其中 表示 AND,
表示 OR,并且可以使用仅 NOT 和 NAND 门实现为
(3)
|
(Simpson 1987),其中 表示 NAND。
真 | 真 | 假 |
真 | 假 | 真 |
假 | 真 | 真 |
假 | 假 | 假 |
二项式系数 mod 2 可以使用 XOR 运算
XOR
计算,使得构建模 2 的帕斯卡三角形非常容易。
对于多个参数,XOR 被定义为当且仅当奇数个参数为真时为真,否则为假。这个定义在计算机科学中非常常见,在计算机科学中,XOR 通常被认为是模 2 加法。在这种情况下,它出现在模 2 的多项式代数、带有全加器的算术电路以及奇偶校验生成或校验中。虽然这意味着多参数 “XOR” 不再能被认为是 “互斥 OR” 运算,但这种形式在数理逻辑中很少使用,因此不会造成太大的混淆。XOR 运算是结合律的,因此 与
相同。多参数 XOR 的计算需要评估其所有参数以确定真值,因此没有 “惰性” 特殊求值形式(就像 AND 和 OR 那样)。
因此,三元 XOR 运算符具有以下真值表。
真 | 真 | 真 | 真 |
真 | 真 | 假 | 假 |
真 | 假 | 真 | 假 |
真 | 假 | 假 | 真 |
假 | 真 | 真 | 假 |
假 | 真 | 假 | 真 |
假 | 假 | 真 | 真 |
假 | 假 | 假 | 假 |
也可以定义 XOR 的按位版本,它对两个数字 和
的二进制数字执行按位 XOR,然后将结果二进制数转换回十进制。按位 XOR 在Wolfram 语言中实现为BitXor[n1, n2, ...]。上面的图示绘制了从
到 31 的数字数组的按位 XOR (Stewart 2000; Rangel-Mondragon; Wolfram 2002, p. 871)。