Exclusive disjunction
|
Exclusive disjunction (usual symbol xor) is a logical operator that results in true if one of the operands, but not both of them, is true.
Contents |
Definition
In English and other languages, the treatment of the word or requires a little care. The exclusive disjunction of propositions A and B means A or B, but not both, as in "you can follow the rules or be disqualified". In logic, the word 'or' usually means the other, inclusive, disjunction.
More formally exclusive disjunction is a logical operator. The operation yields the result TRUE when one, and only one, of its operands is TRUE. The exclusive disjunction of propositions A and B is usually called A xor B, where "xor" stands for "exclusive or" and is pronounced "eks-or" or "zor".
For two inputs A and B, the truth table of the operator is as follows.
A | B | A xor B |
---|---|---|
F | F | F |
F | T | T |
T | F | T |
T | T | F |
It can be deduced from this table that
- (A xor B) ⇔ (A and not B) or (not A and B) ⇔ (A or B) and (not A or not B) ⇔ (A or B) and not (A and B)
In general, the result of xor depends on the number of TRUE operands, if there are an odd number of TRUE operands, then the result will be TRUE, otherwise it will be FALSE.
Symbols
The mathematical symbol for exclusive disjunction varies in the literature. In addition to the abbreviation "xor", one may see
- a plus sign ("+") or a plus sign that is modified in some way, such as being put inside a circle ("<math>\oplus<math>"); this is used because exclusive disjunction corresponds to addition modulo 2 (where 0+0 = 1+1 = 0 , and 0+1 = 1+0 = 1), if F = 0 and T = 1.
- a vee that is modified in some way, such as being underlined ("∨"); this is used because exclusive disjunction is a modification of ordinary (inclusive) disjunction, which is typically denoted by a vee ("∨").
- a caret ("^"), as in the C programming language or Java programming language
Similarly, different textual notations are used, including "EOR" (with the same expansion as "xor") and "orr" (modelled on iff, of which it is the negative).
Associativity and commutativity
For more than two inputs, xor can be applied to the first two inputs, and then the result can be xor'ed with each subsequent input:
- (A xor B xor C xor D) ⇔ (((A xor B) xor C) xor D)
Because xor is associative, the order of the inputs does not matter: the same result will be obtained regardless of association.
The operator xor is also commutative and therefore the order of the operands is not important:
- A xor B ⇔ B xor A
Bitwise operation
Exclusive disjunction is often used for bitwise operations. Examples:
- 1 xor 1 = 0
- 1 xor 0 = 1
- 1110 xor 1001 = 0111
In computer science
XOR.JPG
In computer science, exclusive disjunction is commonly referred to as 'exclusive-or' and 'xor'. It has several uses :
- It tells whether two bits are unequal.
- It is an optional bit-flipper (the deciding input chooses whether or not to invert the data input).
- It tells whether there are an odd number of one bits (A ⊕ B ⊕ C ⊕ D ⊕ E is true iff an odd number of the variables are true).
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) instead of loading and storing the value zero. Because 'xor' is a more complex logical function than 'or' and 'and', its neural network requires an additional processing layer.
Exclusive-or is sometimes used as a simple mixing function in cryptography, for example, with one-time pad or Feistel network systems.
See also
- Boolean algebra
- symmetric difference
- logical or
- logical and
- xor swap algorithm
- xor linked list
- parity
- disjunctive syllogism
- affirming a disjunct.de:XOR-Gatter
es:Puerta XOR fr:OU exclusif he:XOR לוגי ja:排他的論理和 pl:Alternatywa wykluczająca sv:XOR