Однажды подошел ко мне друг и спросил, как поменять две переменных местами, я не задумываясь ответил: введем третью перенную "c" и проведем такие вот действия:
c:=a;
a:=b;
b:=c;
Тогда он спросил, как это сделать без введения третьей переменной. После минуты раздумья я вот что сказал:
a:=a+b;
b:=a-b;
a:=a-b;
Но на вопрос, как сделать это в две операции я ответить не смог. Тогда он мне показал:
a:=a xor b;
b:=b xor a; Вроде так.
Я знаю, что операция xor означает "исключающее или", но забавно, что и переменные местами меняет и быстро и непонятно.