有人可以解释以下xor属性

时间:2016-08-08 15:36:25

标签: algorithm xor bits

我在论坛中提到了n数字的数组:

arr[0........n-1]

以下条件成立,^xor运算符`

f(l,r) = f(0,r) ^ f(0,l-1)

其中f(l,r) = arr[l]^arr[l+1]^........arr[r]

我检查了上面的数组数量以及lr以及 YES 的不同值,这是真的。但我不明白怎么做?

有人可以解释一下这背后的逻辑吗?

2 个答案:

答案 0 :(得分:3)

使用XOR的最简单属性

f(0,r) ^ f(0,l-1) = f(l,r)
=> (f(0,r) ^ f(0,l-1)) ^ f(0,l-1) =  f(0,l-1) ^ f(l,r)
=> f(0,r) = f(l,r) ^ f(0,l-1) [Since XOR is associative f(0,l-1) ^ f(0,l-1) = 0 and x ^ 0 = x]  
=> f(0,r) = (arr[0]^...arr[l-1])^(arr[l]^...^arr[r])

f(0,r)的定义。

答案 1 :(得分:0)

数字arr [0 ... r]可以看作两部分arr [0 ... l-1],arr [1 ... r] 所以f(0,r)= f(0,l-1)^ f(l,r),分别处理这两个部分。

在f(l,r)= f(0,r)^ f(0,l-1)中,f(0,l-1)取消f(0,l-1)in f(0 ,r)将f(l,r)留在后面。