In logic, **exclusive disjunction** is a logical operator.
The exclusive disjunction of propositions *A* and *B* is usually called *A* **xor** *B*, where "xor" stands for "**exclusive or**" and is pronounced "ex-or".

The operation yields the result TRUE when one, and only one, of its operands is TRUE.

For two inputs *A* and *B*, the truth table of the function is as follows.

A B | A xor B ----+-------- F F | F F T | T T F | T T T | FIt 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*)

- a plus sign ("+") or a plus sign that is modified in some way, such as being put inside a circle ("⊕"); this is used because exclusive disjunction corresponds to addition modulo 2 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

Binary values xor'ed by themselves are always zero. In some computer architectures, it is faster to store a zero in a register by xor'ing the value with itself instead of loading and storing the value zero. Thus, on some computer architectures, xor'ing values with themselves is a common optimization.

The xor operation is sometimes used as a simple mixing function in cryptography, for example, with one-time pad or Feistel network systems.