按位运算中A XOR B背后的洞察力是什么?

时间:2014-05-08 17:55:14

标签: bit-manipulation xor

我对A XOR B操作的了解是A != B输出为1,A == B为0。但是,当A和B不是二进制时,我对此操作没有任何见解。

例如,如果A = 1B = 3,则A XOR B = 2;另外,如果A = 2B = 3,则A XOR B = 1。对于非二进制值,XOR操作是否有任何模式?

我对布尔数学有很好的理解,所以我已经理解了XOR的工作原理。我要问的是,例如,如果A和B不是二进制数,你如何在不经过人工计算的情况下预测A XOR B的结果?让我们假设2 XOR 3 = 1不仅仅是一个数学假象。

谢谢!

3 个答案:

答案 0 :(得分:2)

只需查看数字的二进制表示,并对每个位执行以下规则:

0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0

所以,1 XOR 3是:

1   =  001
3   =  011
XOR =  010  =  2

要将(十进制)数字转换为二进制,重复除以2直到达到0,然后以相反顺序的余数为二进制数:

要将其转换回来,重复用2的最大幂除去它,直到达到0,使得二进制数中的每个位置对应于你减去的幂,设置为1(最左边) position对应于0次幂:

Images reference)功能

答案 1 :(得分:1)

关于整数和其他数据的

xor只是各个位的xor

A:    0|0|0|1    = 1
B:    0|0|1|1    = 3
      =======
A^B:  0|0|1|0    = 2

          ^-- Each column is a single bit xor         

答案 2 :(得分:1)

当对多于一位的数字使用位操作时,它只对输入中的每个相应位执行操作,并成为输出中的相应位。所以:

A = 1 = 00000001
B = 3 = 00000011
        --------
result= 00000010 = 2

A = 2 = 00000010
B = 3 = 00000011
        --------
result= 00000001 = 1

只要输入位相同,结果就会有一个0位,只要它们不同,就会有一个1位。

在整数上执行ANDOR时使用相同的方法。