что делает XOR с недвоичными числами? - PullRequest
0 голосов
/ 23 марта 2019

Например,

0^1 вернет 1 и

1^1 вернется 0

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

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

55^4 или 73^1

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

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

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

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

userRoles = userRoles ^ 0b100

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

userRoles = userRoles ^ 8
0 голосов
/ 23 марта 2019

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

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