Xor如何确定哪个int不同?

这是正在解决的问题

“给你三个整数,a、b 和 c。保证其中两个整数彼此相等。第三个整数的值是多少?”

这是代码

int extraNumber(int a, int b, int c) {
    return a^b^c;
}

我理解插入符号“^”的意思是异或,简单来说就是“这个或那个,但不是两个”,但我不明白的是这段代码如何确定哪个 int 与其他 int 不同,或者我可能不明白异或正确吗?

回答

从位级看:

  • x与自身异或运算的值将始终为 0(检查:1^1=00^0=0)。
  • y异或0将总是导致在相同的值y(检查:1^0=10^0=0)。

由于它适用于单个位并且int只有 32 位,因此相同的规则适用于完整int值。

因此,该方法不需要弄清楚“哪些值不同”,因为一个值与自身异或与取消为 0 并将“剩余”值与 0 异或将只返回相同的值。


以上是Xor如何确定哪个int不同?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>