gpt4 book ai didi

java - 实现按位 XNOR

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:54 28 4
gpt4 key购买 nike

我看到一个问题,要求从仅包含一个连续数字的集合中找出非重复数字,其余数字可以重复任意偶数次。那里有一个限制,您需要使用常量内存在单次传递中找到该数字。 {假设所有都是正数}。
我通过制作这个功能轻松实现了这一点

  private static int nonRepeatingElement(int[] set) 
{
int element = 0;
for (int i = 0; i < set.length; i++)
{
element = (element ^ set[i]);
System.out.println(element);
}
return element;
}

这工作正常。
现在只是出于好奇,我想用类似的约束来改变问题。
问题1
我想到了一个集合,它现在包含可以出现任何奇数次的元素,除了一个元素甚至没有出现的时间。 例如 {2,5,7,5,7,1,2,7,1,5,2}
现在考虑 XNOR 为 1 的每个奇数出现给出 0 的逻辑,我将代码更改为有点像

 for (int i = 0; i < set.length; i++) 
{
element = (element ^ set[i]);
System.out.println(element);
}
return ~element;

但这没有用。
问题2
如果我采用集合中的元素,如 {2,5,7,5,7,1,2,7,5,2} 认为 XNORing 将使每三次出现的数字为 0,XNORing 为 1(单次出现)为 0将翻转 1 的位。因此,如果我翻转(〜)我从 XNOR 操作中得到的位,则可以实现最终结果。但这也不起作用。

我知道为什么这种语义会出错,因为它是不合逻辑的按位运算。但是如果可以使用异或来查找数字的奇数出现,那么 XNOR 是否有任何方法可以找到数字的偶数出现?
< br/>我不确定我只是出于好奇而问这个问题的可行性,所以如果它在任何情况下都无关紧要,请原谅我的无知。

最佳答案

XORXNOR 是可交换的。这意味着序列的任何重新排序都将始终产生相同的结果。

您已经知道 a ^ a 为零。这就是单个数字抽象的工作原理:a ^ b ^ a 等于 a ^ a ^ b 等于 0 ^ b b.

但是 a XNOR a不是 a 的函数。它只是 1 位的全部负载。因此,您无法使用 a XNOR a 恢复 a 的值,因此您的方法将不起作用。

关于java - 实现按位 XNOR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27167893/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com