Exclusive disjunction
Encyclopedia : E : EX : EXC : Exclusive disjunction
- "XOR" redirects here. For , see .
Exclusive disjunction, also known as exclusive or and symbolized by XOR or EOR, is a logical operation on two operands that results in a logical value of true if and only if one of the operands, but not both, has a value of ''true.
Definition
In many natural languages, English included, the interpretation of the word "or" requires a certain amount of care. The exclusive disjunction of a pair of propositions, (p, q), means that p is true or q is true, but not both. For example, the normal intention of a statement like "You can follow the rules or be disqualified" is to stipulate that exactly one of the conditions can be true. In logic, however, the default meaning of the word "or" is the inclusive disjunction, which signifies that at least one of the alternatives is true. Other languages, such as Latin, may have different words for these different types of "or".
Exclusive disjunction is an operation on two logical values, typically the values of two propositions, that produces a value of true if and only if one but not both of its operands is true.
The truth table of p XOR q (also written as p + q, p ⊕ q, or p ≠ q) is as follows:
| p | q | p XOR q |
|---|---|---|
| F | F | F |
| F | T | T |
| T | F | T |
| T | T | F |
The following equivalents can then be deduced:
- [\beginp + q & = & (p \land \lnot q) & \lor & (\lnot p \land q) \\\\ & = & (p \lor q) & \land & (\lnot p \lor \lnot q) \\\\ & = & (p \lor q) & \land & \lnot (p \land q)\end]
Alternative symbols
The symbol used for exclusive disjunction varies from one field of application to the next, and even depends on the properties being emphaisized in a given context of discussion. In addition to the abbreviation "XOR", any of the following symbols may also be seen:- A plus sign (+). This makes sense mathematically because exclusive disjunction corresponds to addition modulo 2, which has the following addition table, clearly isomorphic to the one above:
| p | q | p + q |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
- The use of the plus sign has the added advantage that all of the ordinary algebraic properties of mathematical rings and fields can be used without further ado.
- A plus sign that is modified in some way, such as being encircled (⊕). This usage faces the objection that this same symbol is already used in mathematics for the direct sum of algebraic structures.
- An inclusive disjunction symbol (∨) that is modified in some way, such as being underlined (∨).
- In the C programming language and the Java programming language, a caret (^) is used to denote both the ordinary XOR and the bitwise XOR operator. This is not used outside of programming contexts because it is too easily confused with other uses of the caret.
- The symbol
.
Equivalent expressions
The exclusive disjunction [p + q\!] can be expressed in terms of the conjunction (∧), the disjunction (∨), and the negation (¬) as follows:
- [\beginp + q & = & (p \land \lnot q) \lor (\lnot p \land q)\end]
- [\beginp + q & = & \lnot (p \land q) \land (p \lor q)\end]
- [\beginp + q & = & (p \land \lnot q) & \lor & (\lnot p \land q) \\& = & ((p \land \lnot q) \lor \lnot p) & \and & ((p \land \lnot q) \lor q) \\& = & ((p \lor \lnot q) \land (\lnot q \lor \lnot p)) & \land & ((p \lor q) \land (\lnot q \lor q)) \\& = & (\lnot p \lor \lnot q) & \land & (p \lor q) \\& = & \lnot (p \land q) & \land & (p \lor q)\end]
- [\beginp + q & = & \lnot ((p \land q) \lor (\lnot p \land \lnot q))\end]
Associativity and commutativity
In view of the isomorphism between addition modulo 2 and exclusive disjunction, it is clear that XOR is both an associative and a commutative operation. Thus parentheses may be omitted in successive operations and the order of terms makes no difference to the result. For example, we have the following equations:
- [\beginp + q & = & q + p \\\\(p + q) + r & = & p + (q + r) & = & p + q + r\end]
Properties
This section uses the following symbols:
- [\begin0 & = & \mbox \\1 & = & \mbox \\\lnot p & = & \mbox\ p \\p + q & = & p\ \mbox\ q \\p \land q & = & p\ \mbox\ q \\p \lor q & = & p\ \mbox \ q\end]
- [\beginp + 0 & = & p \\p + 1 & = & \lnot p \\p + p & = & 0 \\p + \lnot p & = & 1 \\\\p + q & = & q + p \\p + q + p & = & q \\p + (q + r) & = & (p + q) + r \\p + q & = & \lnot p + \lnot q \\\lnot (p + q) & = & \lnot p + q & = & p + \lnot q \\\\p + (\lnot p \land q) & = & p \lor q \\p + (p \land \lnot q) & = & p \land q \\p + (p \lor q) & = & \lnot p \land q \\\lnot p + (p \lor \lnot q) & = & p \lor q \\p \land (p + \lnot q) & = & p \land q \\p \lor (p + q) & = & p \lor q\end]
Bitwise operation
Exclusive disjunction is often used for bitwise operations. Examples:
- 1 xor 1 = 0
- 1 xor 0 = 1
- 1110 xor 1001 = 0111 (this is equivalent to addition without carry)
Computer science
In computer science, exclusive disjunction has several uses:
- It tells whether two bits are unequal.
- It is an optional bit-flipper (the deciding input chooses whether to invert the data input).
- It tells whether there are an odd number of 1 bits (A ⊕ B ⊕ C ⊕ D ⊕ E is true iff an odd number of the variables are true).
Exclusive-or is sometimes used as a simple mixing function in cryptography, for example, with one-time pad or Feistel network systems.
XOR is used in RAID 3–6 for creating parity information. For example, RAID can "back up" bytes 10011100 and 01101100 from two (or more) hard drives by XORing (11110000) and writing to an another drive. Under this method, if any one of the four hard drives are lost, the lost byte can be re-created by XORing bytes from the remaining drives. If the drive containing 01101100 is lost, 10011100 and 11110000 can be XORed to recover the lost byte.
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 "one" if there is an overflow..
