#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