Обмен двух переменных через XOR
Чтобы поменять местами значения двух целочисленных переменных кроме как через использование дополнительной переменной, можно сделать так:
a += b;
b = a - b;
a -= b;
Интересно разве что с академической точки зрения. Но есть способ интереснее:
a ^= b ^= a ^= b;
который также меняет местами значения этих переменных.
Update: В комментариях подсказали грамотную ссылку (Bit Twiddling Hacks) по трюкам с битовой арифметикой.
Оригинальный пост | Disclaimer