XOR 与非二进制数字有什么作用?

what does XOR with non-binary numbers do?

例如,

0^1 将 return 1

1^1 将 return 0

这对于翻转位有明显的用途。

不过,我见过异或的应用,比如

55^473^1

我不明白这样做的目的是什么。不就是检查55和73分别不等于4和1吗?

它会先将两个数字转换为二进制数,然后对所有位进行按位异或

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

很多时候,如果您有 a^ba 中的信息会以特定位编码。您可以使用位模式进行 XOR,以有用的方式修改此信息。这基本上是一个 位掩码(维基百科文章 here)。

例如,假设您有一些表示用户权限的无符号 32 位整数。每个位对应一个特定的权限。假设第 3 个最低有效位(右起第 3 个)表示用户是否是管理员。然后切换用户是否是管理员,你可以这样做:

userRoles = userRoles ^ 0b100

或等同于

userRoles = userRoles ^ 8