使用XOR属性在数组中找出修改后的元素

时间:2012-05-25 17:17:46

标签: c bit-manipulation xor

此问题正在here

进行
  

如何找出数组中的修改元素?

     

例如:修改前的数组A = {1,2,3,4,5,6}修改后   A = {1,2,3,7,5,6}。这里元素4被元素7替换。

有人使用XOR属性来解决这个问题

 int getModifiedElement(int arr1[ ],int arr2[ ])
       {
                   int xor1 = arr1[0];
                   int xor2 = arr2[0];
                              for(int i=1;<i<arr1.length;i++)
                              {
                                     xor1 = xor1 ^ arr1[i];
                                     xor2 = xor2 ^ arr2[i];
                              }
             return xor1^xor2;
            }

我不清楚用什么XOR属性来解决这个问题?

1 个答案:

答案 0 :(得分:2)

xor具有关联性和可交换性,因此当xor1将数组1中的所有元素和数组2中的xor2组合在一起时,未修改的元素都存在于两者中,因此使用{{ 1}},它们被排除因为xor1 ^ xor2,所以剩下的是x ^ x == 0中的old ^ new,即从数组的旧元素到更改元素的修改。

然而,它既没有说明旧元素是什么,也没有说新元素是什么,所以解决了所述的问题。