【问题标题】:Can somebody explain the following xor property有人可以解释以下异或属性
【发布时间】:2016-08-08 15:36:24
【问题描述】:

我在一个论坛上提到给定数组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]

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

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

【问题讨论】:

  • 写出f(0,r) ^ f(0,l-1)的扩展,然后取消条款。

标签: algorithm xor bits


【解决方案1】:

使用 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)的定义。

【讨论】:

    【解决方案2】:

    数字 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) 在 f(0 ,r) 留下 f(l,r)。

    【讨论】:

      猜你喜欢
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多