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

时间:2019-03-23 02:48:05

标签: bitwise-operators xor

例如,

0^1将返回1

1^1将返回0

这显然是用于翻转位的。

但是,我见过XOR的应用,例如

55^473^1

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

2 个答案:

答案 0 :(得分:0)

它将首先将两个数字都转换为二进制数,然后对所有位应用按位XOR

rafthttp: health check for peer 44ffe8e24fa23c10 could not connect:         x509: certificate is valid for etcd-a.internal.test1.com, etcd-b.internal.test1.com, etcd-c.internal.test1.com, etcd-events-a.internal.test1.com, etcd-events-b.internal.test1.com, etcd-events-c.internal.test1.com, localhost, not etcd-b.internal.test2.com

答案 1 :(得分:0)

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

例如,假设您有一些代表用户权限的无符号32位整数。每一位对应一个特定的权限。说第3个最低有效位(从右数第3个)代表用户是否是管理员。然后,要切换用户是否为管理员,您可以执行以下操作:

userRoles = userRoles ^ 0b100

或等效地

userRoles = userRoles ^ 8