gpt4 book ai didi

language-agnostic - XOR 变量交换如何工作?

转载 作者:行者123 更新时间:2023-12-03 05:24:33 25 4
gpt4 key购买 nike

有人可以向我解释如何在没有临时变量的情况下异或交换两个变量吗?

void xorSwap (int *x, int *y)
{
if (x != y) {
*x ^= *y;
*y ^= *x;
*x ^= *y;
}
}

我明白它的作用,但是有人可以引导我了解它的工作原理吗?

最佳答案

您可以通过替换来了解它是如何工作的:

x1 = x0 xor y0
y2 = x1 xor y0
x2 = x1 xor y2

替换,

x1 = x0 xor y0
y2 = (x0 xor y0) xor y0
x2 = (x0 xor y0) xor ((x0 xor y0) xor y0)

因为异或是完全结合和可交换的:

y2 = x0 xor (y0 xor y0)
x2 = (x0 xor x0) xor (y0 xor y0) xor y0

由于 x xor x == 0 对于任何 x,

y2 = x0 xor 0
x2 = 0 xor 0 xor y0

由于 x xor 0 == x 对于任何 x,

y2 = x0
x2 = y0

交换完成。

关于language-agnostic - XOR 变量交换如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/249423/

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