- usage: swap two int variables. I think the “minus” trick is easier to understand
- usage: doubly-linked list … MLP-sg connectivity java IV#2
- usage: ‘1’ XOR an unknown bit among neighboring bits => TOGGLE the bit
- usage: If you apply an all-1 toggle (bit vector), you get the “bitwise NOT” also known as “one’s complement”
- Like AND, OR, this is bitwise meaning each position is computed independently — nice simplicity

If you are looking for a one-phrase intro to the 2-input XOR, consider

) TOGGLE ie toggle the selected bits. If you apply a toggle twice, you get the original.

) DIFFERENCE ie difference gate, as a special case of “~~odd number of ONEs~~”

…. Therefore, order doesn’t matter. See note below

See https://hackernoon.com/xor-the-magical-bit-wise-operator-24d3012ed821

— how about a bunch of bits to XOR together?

Wikipedia points out — A chain of XORs — *a* XOR *b* XOR *c* XOR *d* (and so on) — evalutes to ONE iFF there is an ~~odd number of ONEs~~ in the inputs. Every pair of toggles would cancel out each other.

### Again, you are free to reshuffle the items as order doesn’t matter.

is the Venn diagram for a xor b xor c. Red means True. Each of the three circles were initially meaning if you shoot dart inside the ‘a’ circle, then you get ‘a=True’. If outside the ‘a’ circle, then ‘a=False’. You can see that your dart is red (i.e. True) only when encircled an odd number of times. Note your dart is unable to land outside the big circle.

Insight — iFF you toggle a NULL (taken as False) odd times, it becomes True. Therefore, if among N input bits, count of True (toggles) is odd, then result is True.

Does order of operand matter? No

https://leetcode.com/problems/single-number/ has a O(1) time O(1) space solution using this hack. Applicable on a collection of floats, or dates, or any serializable objects.