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 A xor B (this work) or A direct sum B (Simpson 1987, pp. 539 and 550-554). A xor B is read "A aut B," where "aut" is Latin for "or, but not both." The circuit diagram symbol for an XOR gate is illustrated above. In set theory, A xor B is typically called the symmetric difference. The XOR function is implemented as Xor[predicate1, predicate2, ...].

The binary XOR operation A xor B is identical to nonequivalence A≢B. A xor B can be implemented using AND and OR gates as

A xor B=(A ^ !B) v (!A ^ B)
=(A v B) ^ (!A v !B),

where  ^ denotes AND and  v denotes OR, and can be implemented using only NOT and NAND gates as

 A xor B=(A nand !B) nand (!A nand B)

(Simpson 1987), where  nand denotes NAND.

The binary XOR operator has the following truth table.

ABA xor B

The binomial coefficient (m; n) mod 2 can be computed using the XOR operation n XOR m, 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 a xor (b xor c) is the same as (a xor b) xor c. 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.

ABCA xor B xor C

A bitwise version of XOR can also be defined that performs a bitwise XOR on the binary digits of two numbers x and y 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 -31 to 31 (Stewart 2000; Rangel-Mondragon; Wolfram 2002, p. 871).

See also

AND, Aut, Binary Operator, Boolean Algebra, Connective, Logic, Munching Squares, NAND, NOR, NOT, OR, Pascal's Triangle, Symmetric Difference, Truth Table, XNOR

Portions of this entry contributed by Roger Germundsson

Explore with Wolfram|Alpha


Rangel-Mondragon, J. "A Catalog of Cellular Automata.", R. E. "The Exclusive OR (XOR) Gate." §12.5.6 in Introductory Electronics for Scientists and Engineers, 2nd ed. Boston, MA: Allyn and Bacon, pp. 550-554, 1987.Stewart, I. "A Fractal Guide to Tic-Tac-Toe." Sci. Amer. 283, 86-88, 2000.Wolfram, S. A New Kind of Science. Champaign, IL: Wolfram Media, p. 871, 2002.

Referenced on Wolfram|Alpha


Cite this as:

Germundsson, Roger and Weisstein, Eric W. "XOR." From MathWorld--A Wolfram Web Resource.

Subject classifications