给定一个大小为N(4的倍数的大小)的整数数组,我们必须对该数组执行异或运算,使得input[1-4]类似于utility_arr[1-4],计算条件为Ifarr[1–4]={a1,a2,a3,a4}然后q[1–4]={a1⊕a2⊕a3,a1⊕a2⊕a4,a1⊕a3⊕a4,a2⊕a3⊕a4}
让我们看看这个的各种输入输出场景-
In −int[]input={5,2,3,4};
Out -XOR运算后的结果4325
解释 -异或门的输出仅在其两个输入端子彼此处于“不同”逻辑电平时才变为“高”。如果这两个输入A和B都处于逻辑电平“1”或“0”,则输出为“0”,从而使门成为“奇数门而不是偶数门”。换句话说,当输入为奇数个1时,输出为“1”。
a1⊕a2⊕a3=5⊕2⊕3=4
a1⊕a2⊕a4=5⊕2⊕4=3
a1⊕a3⊕a4=5⊕3⊕4=2
a2⊕a3⊕a4=2⊕3⊕4=5
In −int[]input={7,6,4,4,3,8,9,5};
Out -XOR运算后的结果5576214154
说明 -异或门的输出仅在其两个输入端子彼此处于“不同”逻辑电平时才变为“高”。如果这两个输入A和B都处于逻辑电平“1”或“0”,则输出为“0”,从而使门成为“奇数门而不是偶数门”。换句话说,当输入为奇数个1时,输出为“1”。仅适用于大小为4的倍数的input[],其他大小的输入数组将显示0代替奇数。
根据异或的性质a⊕a=0和a⊕0=a。(a⊕b⊕c)⊕(b⊕c⊕d)=a⊕d(As(b⊕c)⊕(b⊕c)=0)
为了计算,数组被分成4组,我们将按照XOR的特性来计算每组的结果。
使用(a⊕d)参考上述性质,我们可以计算出b和c(a⊕b⊕d)⊕(a⊕d)=b(a⊕c⊕d)⊕(a⊕d)=c
通过使用b和c,我们可以使用以下方法得到a和d(a⊕b⊕c)⊕(b)⊕(c)=a(b⊕c⊕d)⊕(b)⊕(c)=d
对所有四组重复该过程
循环使用2个指针i和j进行迭代,直到数组的长度除以4,value(ans)并且array(whichstoresanswers)引入了一个temp和一个实用程序。
在for循环内实现了以下xor操作
ans=输入数组[i]⊕输入数组[i+3]
效用数组[i+1](计算b)=输入数组[i+1]⊕ans
效用数组[i+2](计算c)=输入数组[i+2]⊕ans
Utilityarray[i](calculatinga)=inputarray[i]⊕((Utilityarray[i+1])^(Utilityarray[i+2]))
效用数组[i](计算d)=输入数组[i+3]⊕((效用数组[i+1])^(效用数组[i+2]))
并且针对下一组四个字符更新指针
最后,打印数组并将结果返回给用户。
如果我们运行上面的代码,它将生成以下输出
Different XORs of elements in groups of size 4 is : 4 5 6 0