Xor如何确定哪个int不同?
这是正在解决的问题
“给你三个整数,a、b 和 c。保证其中两个整数彼此相等。第三个整数的值是多少?”
这是代码
int extraNumber(int a, int b, int c) {
return a^b^c;
}
我理解插入符号“^”的意思是异或,简单来说就是“这个或那个,但不是两个”,但我不明白的是这段代码如何确定哪个 int 与其他 int 不同,或者我可能不明白异或正确吗?
回答
从位级看:
x与自身异或运算的值将始终为 0(检查:1^1=0和0^0=0)。- 值
y异或0将总是导致在相同的值y(检查:1^0=1和0^0=0)。
由于它适用于单个位并且int只有 32 位,因此相同的规则适用于完整int值。
因此,该方法不需要弄清楚“哪些值不同”,因为一个值与自身异或与取消为 0 并将“剩余”值与 0 异或将只返回相同的值。