Ответ 1
Обратным является XOR!
Если у вас есть:
c = a^b;
Вы можете вернуть a
или b
обратно, если у вас есть другое значение:
a = c^b; // or b^c (order is not important)
b = c^a; // or a^c
Например, если a = 5
, b = 3
(и, таким образом, c = 6
, как вы упомянули), вы получаете:
b=0011 (3) a=0101 (5)
c=0110 (6) XOR or c=0110 (6) XOR
---------- ----------
a=0101 (5) b=0011 (3)