Xor swap is a simple
algorithm which uses the
Exclusive disjunction (XOR) operation to swap the values of two variables without using an extra variable. This algorithm follows (where X and Y are the names of two variables, rather than two values):
- XOR the values of X and Y and store the result in X
- XOR the values of X and Y and store the result in Y
- XOR the values of X and Y and store the result in X
To see how this works, call the initial value of X = x0 and the initial value of Y = y0. Then:
- after step 1, X = x0 XOR y0, Y = y0
- after step 2, X = x0 XOR y0, Y = x0 XOR y0 XOR y0 = x0
- after step 3, X = x0 XOR y0 XOR x0 = y0, Y = x0
This algorithm varies from other swap algorithms only in that it doesn't need to store the original value of X in a temporary buffer prior to overwriting it and doesn't need to restore this value in Y.
See: Assembler code, Visual Basic code, C code
All Wikipedia text
is available under the
terms of the GNU Free Documentation License