^= is Bitwise exclusive OR and assign, which means it will XOR the bit's between the two and assign the value at the same time ie:
Code:
bit_a = 10011010
bit_b = 01011010
bit_a ^= bit_b (bit_a = (10011010 ^ 01011010) => bit_a = 11000000 )
bit_b ^= bit_a (bit_b = (01011010 ^ 11000000) => bit_b = 10011010 )
bit_a ^= bit_b (bit_a = (11000000 ^ 10011010) => bit_a = 01011010 )
As you can see, by that logic it will swap the two of them, so if you're dealing with complete bitwise opreations, this is the way..
But on the other hand, will a STORE versus a XOR instruction be faster for the CPU ?