Recent from talks
Contribute something
Nothing was collected or created yet.
Exclusive or
View on Wikipedia| XOR | |
|---|---|
| Truth table | |
| Logic gate | |
| Normal forms | |
| Disjunctive | |
| Conjunctive | |
| Zhegalkin polynomial | |
| Post's lattices | |
| 0-preserving | yes |
| 1-preserving | no |
| Monotone | no |
| Affine | yes |
| Self-dual | no |
| Logical connectives | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
||||||||||||||||||||||||||
| Related concepts | ||||||||||||||||||||||||||
| Applications | ||||||||||||||||||||||||||
|
|

Exclusive or, exclusive disjunction, exclusive alternation, logical non-equivalence, or logical inequality is a logical operator whose negation is the logical biconditional. With two inputs, XOR is true if and only if the inputs differ (one is true, one is false). With multiple inputs, XOR is true if and only if the number of true inputs is odd.[1]
It gains the name "exclusive or" because the meaning of "or" is ambiguous when both operands are true. XOR excludes that case. Some informal ways of describing XOR are "one or the other but not both", "either one or the other", and "A or B, but not A and B".
It is symbolized by the prefix operator [2]: 16 and by the infix operators XOR (/ˌɛks ˈɔːr/, /ˌɛks ˈɔː/, /ˈksɔːr/ or /ˈksɔː/), EOR, EXOR, , , , ⩛, , , and .
Definition
[edit]
The truth table of shows that it outputs true whenever the inputs differ:
| F | F | F |
| F | T | T |
| T | F | T |
| T | T | F |
Equivalences, elimination, and introduction
[edit]Exclusive disjunction essentially means 'either one, but not both nor none'. In other words, the statement is true if and only if one is true and the other is false. For example, if two horses are racing, then one of the two will win the race, but not both of them. The exclusive disjunction , also denoted by or , can be expressed in terms of the logical conjunction ("logical and", ), the disjunction ("logical or", ), and the negation () as follows:
The exclusive disjunction can also be expressed in the following way:
This representation of XOR may be found useful when constructing a circuit or network, because it has only one operation and small number of and operations. A proof of this identity is given below:
It is sometimes useful to write in the following way:
or:
This equivalence can be established by applying De Morgan's laws twice to the fourth line of the above proof.
The exclusive or is also equivalent to the negation of a logical biconditional, by the rules of material implication (a material conditional is equivalent to the disjunction of the negation of its antecedent and its consequence) and material equivalence.
In summary, we have, in mathematical and in engineering notation:
Negation of the operator
[edit]By applying the spirit of De Morgan's laws, we get:
Relation to modern algebra
[edit]Although the operators (conjunction) and (disjunction) are very useful in logic systems, they fail a more generalizable structure in the following way:
The systems and are monoids, but neither is a group. This unfortunately prevents the combination of these two systems into larger structures, such as a mathematical ring.
However, the system using exclusive or is an abelian group. The combination of operators and over elements produce the well-known two-element field . This field can represent any logic obtainable with the system and has the added benefit of the arsenal of algebraic analysis tools for fields.
More specifically, if one associates with 0 and with 1, one can interpret the logical "AND" operation as multiplication on and the "XOR" operation as addition on :
The description of a Boolean function as a polynomial in , using this basis, is called the function's algebraic normal form.[3]
Exclusive or in natural language
[edit]Disjunction is often understood exclusively in natural languages. In English, the disjunctive word "or" is often understood exclusively, particularly when used with the particle "either". The English example below would normally be understood in conversation as implying that Mary is not both a singer and a poet.[4][5]
- 1. Mary is a singer or a poet.
However, disjunction can also be understood inclusively, even in combination with "either". For instance, the first example below shows that "either" can be felicitously used in combination with an outright statement that both disjuncts are true. The second example shows that the exclusive inference vanishes away under downward entailing contexts. If disjunction were understood as exclusive in this example, it would leave open the possibility that some people ate both rice and beans.[4]
- 2. Mary is either a singer or a poet or both.
- 3. Nobody ate either rice or beans.
Examples such as the above have motivated analyses of the exclusivity inference as pragmatic conversational implicatures calculated on the basis of an inclusive semantics. Implicatures are typically cancellable and do not arise in downward entailing contexts if their calculation depends on the Maxim of Quantity. However, some researchers have treated exclusivity as a bona fide semantic entailment and proposed nonclassical logics which would validate it.[4]
This behavior of English "or" is also found in other languages. However, many languages have disjunctive constructions which are robustly exclusive such as French soit... soit.[4]
Alternative symbols
[edit]The symbol used for exclusive disjunction varies from one field of application to the next, and even depends on the properties being emphasized in a given context of discussion. In addition to the abbreviation "XOR", any of the following symbols may also be seen:
- was used by George Boole in 1847.[6] Although Boole used mainly on classes, he also considered the case that are propositions in , and at the time is a connective. Furthermore, Boole used it exclusively. Although such use does not show the relationship between inclusive disjunction (for which is almost fixedly used nowadays) and exclusive disjunction, and may also bring about confusions with its other uses, some classical and modern textbooks still keep such use.[7][8]
- was used by Christine Ladd-Franklin in 1883.[9] Strictly speaking, Ladd used to express " is-not " or "No is ", i.e., used as exclusions, while implicitly has the meaning of exclusive disjunction since the article is titled as "On the Algebra of Logic".
- , denoting the negation of equivalence, was used by Ernst Schröder in 1890,[10]: 307 Although the usage of as equivalence could be dated back to George Boole in 1847,[6] during the 40 years after Boole, his followers, such as Charles Sanders Peirce, Hugh MacColl, Giuseppe Peano and so on, did not use as non-equivalence literally which is possibly because it could be defined from negation and equivalence easily.
- was used by Giuseppe Peano in 1894: ". The sign corresponds to Latin aut; the sign to vel."[11]: 10 Note that the Latin word "aut" means "exclusive or" and "vel" means "inclusive or", and that Peano use as inclusive disjunction.
- was used by Izrail Solomonovich Gradshtein (Израиль Соломонович Градштейн) in 1936.[12]: 76
- was used by Claude Shannon in 1938.[13] Shannon borrowed the symbol as exclusive disjunction from Edward Vermilye Huntington in 1904.[14] Huntington borrowed the symbol from Gottfried Wilhelm Leibniz in 1890 (the original date is not definitely known, but almost certainly it is written after 1685; and 1890 is the publishing time).[15] While both Huntington in 1904 and Leibniz in 1890 used the symbol as an algebraic operation. Furthermore, Huntington in 1904 used the symbol as inclusive disjunction (logical sum) too, and in 1933 used as inclusive disjunction.[16]
- , also denoting the negation of equivalence, was used by Alonzo Church in 1944.[17]
- (as a prefix operator, ) was used by Józef Maria Bocheński in 1949.[2]: 16 Somebody[18] may mistake that it is Jan Łukasiewicz who is the first to use for exclusive disjunction (it seems that the mistake spreads widely), while neither in 1929[19] nor in other works did Łukasiewicz make such use. In fact, in 1949 Bocheński introduced a system of Polish notation that names all 16 binary connectives of classical logic which is a compatible extension of the notation of Łukasiewicz in 1929, and in which for exclusive disjunction appeared at the first time. Bocheński's usage of as exclusive disjunction has no relationship with the Polish "alternatywa rozłączna" of "exclusive or" and is an accident for which see the table on page 16 of the book in 1949.
- ^, the caret, has been used in several programming languages to denote the bitwise exclusive or operator, beginning with C[20] and also including C++, C#, D, Java, Perl, Ruby, PHP, Python and Rust.
- The symmetric difference of two sets and , which may be interpreted as their elementwise exclusive or, has variously been denoted as , , or .[21]
Properties
[edit]- Commutativity: yes
-


- Associativity: yes
-





- Distributivity:
- The exclusive or does not distribute over any binary function (not even itself), but logical conjunction distributes over exclusive or. (Conjunction and exclusive or form the multiplication and addition operations of a field GF(2), and as in any field they obey the distributive law.)
- Idempotency: no
-




- Monotonicity: no
-




- Truth-preserving: no
- When all inputs are true, the output is not true.


- Falsehood-preserving: yes
- When all inputs are false, the output is false.


- Walsh spectrum: (2,0,0,−2)
- Non-linearity: 0
- The function is linear.
- Involution:
- Exclusive or with one specified input, as a function of the other input, is an involution or self-inverse function; applying it twice leaves the variable input unchanged.



If using binary values for true (1) and false (0), then exclusive or works exactly like addition modulo 2.
Computer science
[edit]
Bitwise operation
[edit]
Exclusive disjunction is often used for bitwise operations. Examples:
- 1 XOR 1 = 0
- 1 XOR 0 = 1
- 0 XOR 1 = 1
- 0 XOR 0 = 0
- 11102 XOR 10012 = 01112 (this is equivalent to addition without carry)
As noted above, since exclusive disjunction is identical to addition modulo 2, the bitwise exclusive disjunction of two n-bit strings is identical to the standard vector of addition in the vector space .
In computer science, exclusive disjunction has several uses:
- It tells whether two bits are unequal.
- It is a controllable bit-flipper (the control input chooses whether or not to invert the data input).
- It tells whether there is an odd number of 1 bits ( is true if and only if an odd number of the variables are true), which is equal to the parity bit returned by a parity function.
In logical circuits, a simple adder can be made with an XOR gate to add the numbers, and a series of AND, OR and NOT gates to create the carry output.
On some computer architectures, it is more efficient to store a zero in a register by XOR-ing the register with itself (bits XOR-ed with themselves are always zero) than to load and store the value zero.
In cryptography, XOR is sometimes used as a simple, self-inverse mixing function, such as in one-time pad or Feistel network systems.[citation needed] XOR is also heavily used in block ciphers such as AES (Rijndael) or Serpent and in block cipher implementation (CBC, CFB, OFB or CTR).
In simple threshold-activated artificial neural networks, modeling the XOR function requires a second layer because XOR is not a linearly separable function.
Similarly, XOR can be used in generating entropy pools for hardware random number generators. The XOR operation preserves randomness, meaning that a random bit XORed with a non-random bit will result in a random bit. Multiple sources of potentially random data can be combined using XOR, and the unpredictability of the output is guaranteed to be at least as good as the best individual source.[22]
XOR is used in RAID 3–6 for creating parity information. For example, RAID can "back up" bytes 100111002 and 011011002 from two (or more) hard drives by XORing the just mentioned bytes, resulting in (111100002) and writing it to another drive. Under this method, if any one of the three hard drives are lost, the lost byte can be re-created by XORing bytes from the remaining drives. For instance, if the drive containing 011011002 is lost, 100111002 and 111100002 can be XORed to recover the lost byte.[23]
XOR is also used to detect an overflow in the result of a signed binary arithmetic operation. If the leftmost retained bit of the result is not the same as the infinite number of digits to the left, then that means overflow occurred. XORing those two bits will give a "1" if there is an overflow.
XOR can be used to swap two numeric variables in computers, using the XOR swap algorithm; however this is regarded as more of a curiosity and not encouraged in practice.
XOR linked lists leverage XOR properties in order to save space to represent doubly linked list data structures.
In computer graphics, XOR-based drawing methods are often used to manage such items as bounding boxes and cursors on systems without alpha channels or overlay planes.
Encodings
[edit]It is also called "not left-right arrow" (\nleftrightarrow) in LaTeX-based markdown (). Apart from the ASCII codes, the operator is encoded at U+22BB ⊻ XOR (⊻) and U+2295 ⊕ CIRCLED PLUS (⊕, ⊕), both in block mathematical operators.
See also
[edit]Notes
[edit]- ^ Germundsson, Roger; Weisstein, Eric. "XOR". MathWorld. Wolfram Research. Retrieved 17 June 2015.
- ^ a b Bocheński, J. M. (1949). Précis de logique mathématique (PDF) (in French). The Netherlands: F. G. Kroonder, Bussum, Pays-Bas. Translated as Bocheński, J. M. (1959). A Precis of Mathematical Logic. Translated by Bird, O. Dordrecht, Holland: D. Reidel Publishing Company. doi:10.1007/978-94-017-0592-9. ISBN 978-90-481-8329-6.
{{cite book}}: ISBN / Date incompatibility (help) - ^ Joux, Antoine (2009). "9.2: Algebraic normal forms of Boolean functions". Algorithmic Cryptanalysis. CRC Press. pp. 285–286. ISBN 9781420070033.
- ^ a b c d Aloni, Maria (2016). "Disjunction". In Zalta, Edward N. (ed.). The Stanford Encyclopedia of Philosophy (Winter 2016 ed.). Metaphysics Research Lab, Stanford University. Retrieved 2020-09-03.
- ^ Jennings quotes numerous authors saying that the word "or" has an exclusive sense. See Chapter 3, "The First Myth of 'Or'":
Jennings, R. E. (1994). The Genealogy of Disjunction. New York: Oxford University Press. - ^ a b Boole, G. (1847). The Mathematical Analysis of Logic, Being an Essay Towards a Calculus of Deductive Reasoning. Cambridge/London: Macmillan, Barclay, & Macmillan/George Bell. p. 17.
- ^ Enderton, H. (2001) [1972]. A Mathematical Introduction to Logic (2 ed.). San Diego, New York, Boston, London, Toronto, Sydney and Tokyo: A Harcourt Science and Technology Company. p. 51.
- ^ Rautenberg, W. (2010) [2006]. A Concise Introduction to Mathematical Logic (3 ed.). New York, Dordrecht, Heidelberg and London: Springer. p. 3.
- ^ Ladd, Christine (1883). "On the Algebra of Logic". In Peirce, C. S. (ed.). Studies in Logic by Members of the Johns Hopkins University. Boston: Little, Brown & Company. pp. 17–71.
- ^ Schröder, E. (1890). Vorlesungen über die Algebra der Logik (Exakte Logik), Erster Band (in German). Leipzig: Druck und Verlag B. G. Teubner. Reprinted by Thoemmes Press in 2000.
- ^ Peano, G. (1894). Notations de logique mathématique. Introduction au formulaire de mathématique. Turin: Fratelli Boccna. Reprinted in Peano, G. (1958). Opere Scelte, Volume II. Roma: Edizioni Cremonese. pp. 123–176.
- ^ ГРАДШТЕЙН, И. С. (1959) [1936]. ПРЯМАЯ И ОБРАТНАЯ ТЕОРЕМЫ: ЭЛЕМЕНТЫ АЛГЕБРЫ ЛОГИКИ (in Russian) (3 ed.). МОСКВА: ГОСУДАРСТВЕННОЕ ИЗДАТЕЛЬСТВО ФИЗИКа-МАТЕМАТИЧЕСКОЙ ЛИТЕРАТУРЫ. Translated as Gradshtein, I. S. (1963). Direct and Converse Theorems: The Elements of Symbolic Logic. Translated by Boddington, T. Oxford, London, New York and Paris: Pergamon Press.
- ^ Shannon, C. E. (1938). "A Symbolic Analysis of Relay and Switching Circuits" (PDF). Transactions of the American Institute of Electrical Engineers. 57 (12): 713–723. doi:10.1109/T-AIEE.1938.5057767. hdl:1721.1/11173. S2CID 51638483.
- ^ Huntington, E. V. (1904). "Sets of Independent Postulates for the Algebra of Logic". Transactions of the American Mathematical Society. 5 (3): 288–309. doi:10.1090/S0002-9947-1904-1500675-4.
- ^ Leibniz, G. W. (1890) [16??/17??]. Gerhardt, C. I. (ed.). Die philosophischen Schriften, Siebter Band (in German). Berlin: Weidmann. p. 237. Retrieved 7 July 2023.
- ^ Huntington, E. V. (1933). "New Sets of Independent Postulates for the Algebra of Logic, With Special Reference to Whitehead and Russell's Principia Mathematica". Transactions of the American Mathematical Society. 35 (1): 274–304.
- ^ Church, A. (1996) [1944]. Introduction to Mathematical Logic. New Jersey: Princeton University Press. p. 37.
- ^ Craig, Edward (1998). Routledge Encyclopedia of Philosophy, Volume 8. Taylor & Francis. p. 496. ISBN 978-0-41507310-3.
- ^ Łukasiewicz, Jan (1929). Elementy logiki matematycznej [Elements of Mathematical Logic] (in Polish) (1 ed.). Warsaw, Poland: Państwowe Wydawnictwo Naukowe.
- ^ Kernighan, Brian W.; Ritchie, Dennis M. (1978). "2.9: Bitwise logical operators". The C Programming Language. Prentice-Hall. pp. 44–46.
- ^ Weisstein, Eric W. "Symmetric Difference". MathWorld.
- ^ Davies, Robert B (28 February 2002). "Exclusive OR (XOR) and hardware random number generators" (PDF). Retrieved 28 August 2013.
- ^ Nobel, Rickard (26 July 2011). "How RAID 5 actually works". Retrieved 23 March 2017.
External links
[edit]Exclusive or
View on Grokipedia| A | B | A ⊕ B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Fundamentals
Definition
The exclusive or (XOR), also known as exclusive disjunction, is a fundamental binary logical operator in propositional logic and Boolean algebra that evaluates to true if exactly one of its two inputs is true and false otherwise.[11][12] For propositions and , the statement holds true precisely when and have differing truth values—one is true and the other false—making it distinct from the inclusive or, which allows both inputs to be true.[3][7] This operation captures the notion of "either... or... but not both," emphasizing mutual exclusivity in logical conditions.[11] In its standard two-input form, XOR serves as a core building block in digital circuits and computational logic, where it is often implemented using the symbol to denote the operation between Boolean variables or bits.[3] The operator is commutative, meaning yields the same result as , though detailed properties are explored elsewhere.[13] XOR generalizes to multiple inputs (-ary XOR), where the output is true if and only if an odd number of the inputs are true, providing a parity-checking mechanism in applications like error detection.[14][15] However, the binary case remains the primary focus for defining the operation's intuitive and formal behavior.[16]Truth Table
The truth table for the exclusive or (XOR) operation with two inputs, typically denoted as and , exhaustively lists all possible input combinations and their corresponding outputs. The output is true (1) if and only if exactly one of the inputs is true, and false (0) otherwise.[5]| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Logical Expressions
Equivalences
The exclusive or operation, denoted as or XOR , can be expressed in terms of more primitive logical connectives: conjunction (), disjunction (), and negation (). One primary equivalence is the disjunctive normal form:This form captures the cases where exactly one of or is true, by conjoining each proposition with the negation of the other and then taking their disjunction.[5] An alternative equivalence relates XOR to the inclusive or () by excluding the case where both are true:
This conjunctive normal form emphasizes the union of and minus their intersection, providing a compact representation useful in certain proof contexts.[17][18] In logical proofs and circuit design, an elimination rule for XOR involves replacing instances of with its disjunctive form to simplify formulas or convert to a standard normal form without the XOR connective. Conversely, an introduction rule allows inserting XOR by recognizing the conjunction-disjunction pattern and substituting , facilitating modular reasoning or equivalence transformations. These rules preserve logical equivalence and are standard in propositional logic derivations.[19] Both equivalences can be verified through truth table comparison, as detailed in the truth table for XOR. Constructing a truth table for the right-hand side of each equivalence yields identical truth values to the XOR column across all four input combinations of and , confirming the equivalences hold tautologically.[20]
Negation
The negation of the exclusive or operation, denoted as ¬(p ⊕ q), is logically equivalent to the expression (p ∧ q) ∨ (¬p ∧ ¬q), which holds true when both propositions p and q are either true or false.[21] This form represents the exclusive nor (XNOR) operator and is also identical to the biconditional p ↔ q.[21] The equivalence arises because XOR is true only when p and q differ in truth value, so its negation is true precisely when they share the same truth value.[22] This core identity can be derived by applying De Morgan's laws to the disjunctive normal form of XOR, p ⊕ q ≡ (p ∧ ¬q) ∨ (¬p ∧ q): [22] A symmetry property of XOR negation states that negating one input produces the same result as negating the entire operation: ¬p ⊕ q ≡ p ⊕ ¬q ≡ ¬(p ⊕ q) ≡ p ↔ q.[23] This holds because flipping the truth value of one operand in XOR inverts the overall parity, mirroring the effect of direct negation on the output.[22] De Morgan-like dualities for XOR negation emerge from the above derivation, where the outer negation distributes over the disjunction in XOR's expression, transforming OR into AND and negating the inner components—analogous to standard De Morgan rules but tailored to XOR's structure of differing inputs.[22] This duality highlights XOR's role in parity logic, enabling simplifications in circuit design and proof systems.[23] For example, negating XOR yields the biconditional, which formalizes "p if and only if q" as true only when p and q are equivalent in truth value; this is evident in applications like equivalence checking, where ¬(p ⊕ q) confirms matching states without the exclusion of XOR.[21]Algebraic Aspects
Properties
The exclusive or (XOR) operation, denoted as , exhibits several fundamental properties within Boolean algebra that distinguish it from other binary operators like AND () and OR (). These properties arise from its definition as the operator that yields true if and only if its inputs differ, and they underpin its utility in logical expressions and computations.[7] XOR is commutative, meaning the order of operands does not affect the result: . This symmetry holds because the truth value depends solely on whether the inputs differ, regardless of sequence.[24] Similarly, XOR is associative, allowing parentheses to be omitted in multi-operand expressions: . Associativity ensures consistent evaluation across chained operations, as the overall parity of true inputs determines the outcome.[24] Unlike AND and OR, which are idempotent ( and ), XOR is non-idempotent: , where denotes false. This property reflects XOR's role in toggling or canceling identical inputs. The constant false serves as the identity element for XOR: , preserving the operand unchanged. Furthermore, each Boolean value acts as its own inverse under XOR, reinforcing the self-canceling behavior: .[7][24] In terms of distributivity, AND distributes over XOR: , enabling factorization in expressions involving these operators. However, XOR does not distribute over OR. This selective distributivity aligns with XOR's interpretation as addition modulo 2 in the field of two elements (GF(2)), where AND corresponds to multiplication.[24][25] When extended to binary representations, XOR operates linearly bit by bit, equivalent to vector addition modulo 2. For multi-bit numbers, each bit position computes independently as , without carry propagation, facilitating efficient parity checks and error detection.[24]Relation to Modern Algebra
In modern algebra, the exclusive or (XOR) operation finds a natural interpretation as the addition in the finite field , whose elements are with arithmetic modulo 2. Here, addition corresponds to XOR (where , , , ), and multiplication corresponds to the logical AND operation (where , , , ). This structure equips with the properties of a field, including distributivity: . Extending this, the set of all Boolean functions on variables, under pointwise XOR as addition and pointwise AND as multiplication, forms a Boolean ring, a commutative ring where every element is idempotent ( for any function ).[26][27] The collection of all -bit binary strings, denoted , equipped with bitwise XOR as the binary operation, constitutes an abelian group isomorphic to . The identity element is the zero vector (all bits 0, representing false), and the operation is commutative and associative, with every element serving as its own inverse: for any string , . This group structure arises directly from the vector space properties over , where scalar multiplication by 0 annihilates any vector and multiplication by 1 leaves it unchanged.[28] More broadly, forms an -dimensional vector space over , with XOR as vector addition and the field scalars acting componentwise. A basis for this space consists of the standard basis vectors (with a 1 in the -th position and 0s elsewhere), and linear independence of a set of vectors holds if no nonempty subset sums (via XOR) to the zero vector; equivalently, the matrix formed by these vectors as columns has full column rank over . Any -bit string can be uniquely expressed as a linear combination of a basis, highlighting XOR's role in encoding linear dependencies among binary data.[28][29] Systems of linear equations involving XOR operations, such as for where coefficients and are in and summation is XOR, can be solved using Gaussian elimination performed modulo 2. This process row-reduces the augmented coefficient matrix over to row echelon form, identifying the solution space (affine subspace if consistent) or detecting inconsistency if a row reduces to . The time complexity is , making it efficient for sparse systems common in algebraic contexts.[30] An important extension is the representation of Boolean functions via Zhegalkin polynomials, also known as the algebraic normal form (ANF), which express any function as a multilinear polynomial over : , where denotes XOR (addition in ), denotes AND (multiplication), and coefficients are determined by Möbius inversion on the subset lattice. This XOR-of-ANDs form is unique, canonical, and facilitates analysis of function properties like nonlinearity and algebraic immunity, as the degree equals the highest with .[31]Notation and Language
Alternative Symbols
The primary symbol for exclusive or is the circled plus ⊕ (Unicode U+2295), introduced by mathematician Edward V. Huntington in his 1904 paper on independent postulates for the algebra of logic to denote symmetric difference. This notation was adopted by Claude Shannon in his 1938 master's thesis, A Symbolic Analysis of Relay and Switching Circuits, where it appeared in diagrams representing relay-based exclusive disjunction operations. In LaTeX, it is rendered using the command\oplus.
Other notations include the caret ^, widely used in programming languages for bitwise exclusive or; for example, in C, C++, Java, and Python, a ^ b computes the bitwise XOR of integers a and b. In Polish notation systems, logician Józef Maria Bocheński assigned the symbol J in his 1949 extension of Łukasiewicz's notation to cover all 16 binary connectives, where Jpq denotes the exclusive disjunction of p and q. Some early logical texts used the inequality symbol ≠ to represent exclusive or, emphasizing its function as logical inequality (true when operands differ).[32]
Contextual variations appear in specialized domains: the slashed disjunction ∨̸ (Unicode U+22C0, LaTeX \not\vee or \veebar) denotes exclusive disjunction in certain formal logic contexts to distinguish it from inclusive or. In Boolean algebra interpreted as a ring over GF(2), the addition operator + serves as exclusive or, aligning with modular arithmetic where addition modulo 2 yields the symmetric difference.[33]
The evolution of these symbols traces from early 20th-century algebraic logic, where Huntington's ⊕ formalized Boolean operations, through Shannon's application to electrical engineering in the 1930s, to mid-century digital circuit design, where IEEE standards defined graphical symbols for logic functions including XOR in diagrams, alongside algebraic notations like ⊕ and ⊻ (Unicode U+22BB, LaTeX \veebar) in mathematical texts, and finally to 1970s programming standards like ASCII, which assigned ^ for efficient bitwise operations in languages such as B and C.
Usage in Natural Language
In natural language, the English word "or" frequently conveys an exclusive disjunction, implying that only one of the alternatives can hold true, even though its semantic core is inclusive. For instance, the common query "Would you like tea or coffee?" typically suggests choosing one beverage, not both, as responding with both would often require clarification like "or both?" This exclusive interpretation arises in everyday scenarios where alternatives are mutually limiting, such as selecting "pie or cake" from a limited menu portion.[34][35] This usage introduces ambiguity between inclusive and exclusive meanings, which can lead to misunderstandings, particularly in precise domains like law. In legal drafting, "or" is often treated as inclusive unless specified otherwise, but phrases like "either...or" explicitly signal exclusivity to avoid disputes over joint fulfillment. For example, a contract stating "the buyer shall pay by cash or check" might allow both if inclusive, but "either cash or check" enforces selection of one to prevent ambiguity in obligations. Courts have interpreted "either...or" as denoting exclusive disjunction in English legal contexts, contrasting with more flexible uses in other languages.[36][8][37] Cross-linguistically, interpretations vary: French "ou" tends toward exclusivity in simple disjunctions, as in "thé ou café," where both would violate the implied choice, though complex forms like "ou...ou" can reinforce this. In Spanish, "o" is more context-dependent, functioning as inclusive or exclusive based on pragmatics, similar to English but without a strict default, as seen in phrases like "té o café" that allow both unless specified. These differences highlight how disjunctive particles encode exclusivity through convention rather than universal semantics.[38][39][8] Philosophically, the exclusive flavor of "or" in natural language stems from Gricean implicature, where speakers adhere to the maxim of quantity—providing no more information than needed—leading hearers to infer exclusivity from an inclusive statement. For example, saying "John bought apples or oranges" implicates "but not both" because mentioning both would be more informative if true, unless context cancels the implicature. This pragmatic mechanism explains why inclusive "or" often sounds exclusive without altering literal meaning.[40][41] Common phrases and literary examples further illustrate this: the idiom "you can't have your cake and eat it too" embodies exclusive disjunction by asserting the impossibility of simultaneous possession and consumption, underscoring mutually exclusive options. In literature, such as Lewis Carroll's Through the Looking-Glass, the White Queen's offer of "jam tomorrow and jam yesterday—but never jam today" plays on exclusive alternatives to highlight logical paradoxes in choice. These expressions reinforce how everyday language prioritizes exclusivity for clarity in decision-making.[34]Applications
Computer Science
In computer science, the exclusive or (XOR) operation is fundamental as a bitwise operator that performs a logical exclusive OR on corresponding bits of two binary numbers, producing a 1 in each bit position where the inputs differ and 0 where they are the same.[42] This bitwise XOR is applied independently to each bit pair, making it efficient for integer manipulation in programming languages. For instance, in binary, 5 (101) XOR 3 (011) yields 6 (110), as the first and third bits differ while the second matches.[43] Languages like C, C++, and Python use the caret symbol (^) to denote this operator, allowing direct application to integers for tasks such as bit flipping or masking.[44] One notable application of bitwise XOR is the XOR swap algorithm, which exchanges the values of two variables without requiring temporary storage, leveraging the property that XORing a value with itself yields zero and XORing with zero preserves the value. The steps are:a = a ^ b; b = a ^ b; a = a ^ b;, where the first step stores the XOR of both in a, the second recovers the original a in b, and the third extracts the original b in a.[45] This technique, while historically useful in memory-constrained environments, is now often optimized or avoided by modern compilers in favor of explicit temporary variables for clarity.[46]
The XOR symbol ⊕ is encoded in Unicode as U+2295 (Circled Plus) within the Mathematical Operators block, enabling its use in documentation and code comments across systems supporting Unicode. In programming, the operator ^ is standard in many languages, including JavaScript and Java, where it applies to integers or BigInts bit by bit.[42]
XOR plays a key role in data structures for hashing and error detection. In hashing, it is commonly used to combine multiple hash values, such as folding bits or merging sub-hashes, due to its commutative and associative properties that help distribute values evenly without order dependency.[47] For checksums, XOR computes parity bits in error-detecting codes; an even parity bit is the XOR of all data bits set to make the total XOR zero, detecting single-bit errors in transmission by verifying if the received parity matches.[48]
At the hardware level, XOR is implemented using XOR gates in digital circuits, which output 1 only for an odd number of 1 inputs and are essential in arithmetic logic units (ALUs) for addition, subtraction, and comparison. These gates typically require a low gate count, such as four NAND gates for a two-input XOR, making them cost-effective in VLSI design.[49]