c - 使用 XOR 属性找出数组中修改的元素

标签 c bit-manipulation xor

这个问题正在从 here 尝试。

How to find out modified element in an array?

Eg: Array A= {1,2,3,4,5,6} before modifiction After modification A={1,2,3,7,5,6}. Here the element 4 is replaced with element 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 具有关联性和交换性,因此当 xor1 将数组 1 中的所有元素和数组 2 中的 xor2 元素异或在一起时,未修改的元素两者都存在,因此对于 xor1 ^ xor2,它们会被消除,因为 x ^ x == 0,所以剩下的是 old ^ new > 在xor1 ^ xor2中,这是从旧的数组元素到已更改的数组元素的修改。

但是,它既没有说明旧元素是什么,也没有说明新元素是什么,因此它没有解决所述问题。

关于c - 使用 XOR 属性找出数组中修改的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10758728/

相关文章:

html - 为所有客户端格式化原始 HTML 输出

c++ - 线程阻塞等待消息

c - 长整数中单个位的索引(在 C 中)

c# - 将字节数组移位 N 位

python - 如何正确环绕单字节 XOR key ?

actionscript-3 - Actionscript 3 ByteArray 异或?

c - 尝试从c中的文件中的单词(文本)中进行动态内存分配

c - 将字符串附加到动态字符数组的函数的 ACSL 规范

c++ - 按位不和逻辑不 : Why ~true == true and ~false == false

c - 处理具有不同 key 大小和字节序的异或