Я пытаюсь понять двоичные операторы в С# или вообще, в частности ^ - эксклюзивные или.
Например:
Задано массив положительных целых чисел. Все числа имеют четное число раз, за исключением одного числа, которое встречается нечетное число раз. Найдите число в O (n) время и постоянное пространство.
Это можно сделать с помощью ^ следующим образом: Побитовое XOR всех элементов. Наконец, мы получаем число, которое имеет нечетные вхождения.
Как это работает?
Когда я это сделаю:
int res = 2 ^ 3;
res = 1;
int res = 2 ^ 5;
res = 7;
int res = 2 ^ 10;
res = 8;
Что на самом деле происходит? Каковы другие бит-магии? Любую ссылку я могу посмотреть и узнать о них больше?