A connective in logic known as the "exclusive or," or exclusive
disjunction. It yields true if exactly one (but
not both) of two conditions is true. The XOR operation does not have a standard symbol,
but is sometimes denoted
(this work) or
(Simpson 1987, pp. 539 and 550-554).
is read "
aut
," where "aut" is Latin for "or, but not
both." The circuit diagram symbol for an XOR gate is illustrated above. In set theory,
is typically called the symmetric
difference. The XOR function is implemented as Xor[predicate1,
predicate2, ...].
The binary XOR operation
is identical to nonequivalence
.
can be implemented using AND and OR
gates as
(1)
| |||
(2)
|
where denotes AND
and
denotes OR,
and can be implemented using only NOT and NAND
gates as
(3)
|
(Simpson 1987), where
denotes NAND.
The binary XOR operator has the following truth table.
T | T | F |
T | F | T |
F | T | T |
F | F | F |
The binomial coefficient mod 2 can be computed using the XOR operation
XOR
,
making Pascal's triangle mod 2 very easy to construct.
For multiple arguments, XOR is defined to be true if an odd number of its arguments are true, and false otherwise. This definition is quite common in computer science,
where XOR is usually thought of as addition modulo 2. In this context, it arises
in polynomial algebra modulo 2, arithmetic circuits with a full adder, and in parity
generating or checking. While this means that the multiargument "XOR" can
no longer be thought of as "the exclusive OR" operation, this form is rarely
used in mathematical logic and so does not cause very much confusion. The XOR operation
is associative, so
is the same as
.
Computation of the multiargument XOR requires evaluation of all its arguments to
determine the truth value, and hence there is no "lazy" special evaluation
form (as there is for AND and OR).
The ternary XOR operator therefore has the following truth table.
T | T | T | T |
T | T | F | F |
T | F | T | F |
T | F | F | T |
F | T | T | F |
F | T | F | T |
F | F | T | T |
F | F | F | F |
A bitwise version of XOR can also be defined that performs a bitwise XOR on the binary digits of two numbers
and
and then converts the resulting binary
number back to decimal. Bitwise XOR is implemented in the Wolfram
Language as BitXor[n1,
n2, ...]. The illustration above plots the bitwise XOR of the array of numbers
from
to 31 (Stewart 2000; Rangel-Mondragon;
Wolfram 2002, p. 871).