что делает XOR с недвоичными числами?

#bitwise-operators #xor

#побитовые операторы #xor

Вопрос:

Например,

0^1 вернет 1 и

1^1 вернет 0

Это имеет очевидное применение для переключения битов.

Тем не менее, я видел приложения XOR, такие как

55^4 или 73^1

Я не понимаю, какова цель этого. Разве это не просто проверка того, что 55 и 73 не равны 4 и 1 соответственно?

Ответ №1:

Сначала оба числа преобразуются в двоичное число, а затем применяется побитовое XOR для всех битов

 55 -> 110111
4  -> 000100
Xor-> 110011  ->which is equal to decimal 51.
  

Ответ №2:

Часто, если у вас есть a^b , информация в a кодируется в определенных битах. Вы можете выполнять XOR с помощью битового шаблона, чтобы изменить эту информацию полезными способами. По сути, это битовая маска (статья в Википедии здесь).

Допустим, у вас есть некоторое 32-разрядное целое число без знака, которое представляет разрешения пользователя. Каждый бит соответствует определенному разрешению. Допустим, 3-й младший значащий бит (3-й справа) представляет, является ли пользователь администратором или нет. Затем для переключения, если пользователь является администратором, вы можете сделать что-то вроде этого:

 userRoles = userRoles ^ 0b100
  

или эквивалентно

 userRoles = userRoles ^ 8