It takes advantage of the bitwise XOR operation to decrease storage requirements for doubly linked lists by storing the composition of both addresses in one field.
To start traversing the list in either direction from some point, the address of two consecutive items is required.
If the addresses of the two consecutive items are reversed, list traversal will occur in the opposite direction.
Where it is still desirable to reduce the overhead of a linked list, unrolling provides a more practical approach (as well as other advantages, such as increasing cache performance and speeding random access).
The underlying principle of the XOR linked list can be applied to any reversible binary operation.