Обмен двух переменных через XOR

Чтобы поменять местами значения двух целочисленных переменных кроме как через использование дополнительной переменной, можно сделать так:

a += b;
b = a - b;
a -= b;

Интересно разве что с академической точки зрения. Но есть способ интереснее:

a ^= b ^= a ^= b;

который также меняет местами значения этих переменных.

Update: В комментариях подсказали грамотную ссылку (Bit Twiddling Hacks) по трюкам с битовой арифметикой.


Оригинальный пост | Disclaimer

Комментарии