Bitwise XOR Assignment Operator (^=)
Performs a bitwise exclusive OR on a variable and an expression and assigns the result to the variable.
Using this operator is almost the same as specifying result = result ^ expression, except that result is only evaluated once.
The ^= operator coerces the arguments to matching data types. Then the ^= operator looks at the binary representation of the values of two expressions and does a bitwise exclusive OR operation on them. The result of this operation behaves as follows:
0101 (result) 1100 (expression) ---- 1001 (result)
When one, and only one, of the expressions has a 1 in a digit, the result has a 1 in that digit. Otherwise, the result has a 0 in that digit.