理解XOR逻辑运算符

时间:2013-08-17 06:56:27

标签: ruby language-agnostic

我不明白这个

2.0.0p247 :616 > 5 ^ 2
 => 7 
2.0.0p247 :617 > 5 ^ 1
 => 4 

在这些情况下,7和4意味着什么?

我试着在这里阅读http://en.wikipedia.org/wiki/Exclusive_disjunction,但是通过查看图表这里的减法是什么无法弄清楚。对不起,如果这是一个简单的数学问题。

1 个答案:

答案 0 :(得分:10)

它与值的二进制表示有关。

5 = 0101
2 = 0010
1 = 0001

现在XOR的工作原理如下:

0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0

所以要计算5 ^ 2,让我们将^操作应用于每列

0101   (this is 5)
0010   (this is 2)
----
0111   ==> which is the binary representation of 7

这是怎么回事?在最左边的列中,我们计算了0^0=0。在第二列中,1^0=1。在第三列0^1=1,依此类推。

和5 ^ 1

0101   (this is 5)
0001   (this is 1)
----
0100   ==> which is the binary represenation of 4