Поразрядная операция ИСКЛЮЧАЮЩЕЕ ИЛИ
Поразрядная операция " исключающее ИЛИ" выполняет над парами битов в операндах логическую операцию " исключающее или" , называемую также НЕРАВНОЗНАЧНОСТЬ или СЛОЖЕНИЕ ПО МОДУЛЮ 2 - результат равен 1 при несовпадении значений битов:
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
Наиболее часто используемый вариант этой операции :
a = a ^ b; или a ^= b;
Он интерпретируется таким образом: если бит операнда b равен 0 то бит результата сохраняет свое значение, если 1 -то меняется на противоположное (инвертируется). Такую операцию можно назвать ИНВЕРСИЯ БИТОВ по маске, установленной во втором операнде. Наиболее естественно это выглядит в том случае, когда второй операнд является константой
a ^= 0x0861; // Инвертировать биты 0,5,6,11
a ^= 0x00F0; // Инвертировать биты с 4 по 7
// (биты второй цифры справа)