我理解代码之外的XOR的概念和概念。但是当我在代码中使用它时,我想要一个简单的解释。让我举几个例子,说明我理解不通的问题。
假设我们想要在C ++中交换互联网值而不使用第三个临时变量并使用XOR,如下所示:
int a = 1;
int b = 3;
int *x = &a;
int *y = &b;
*x ^= *y;
*y ^= *x;
*x ^= *y;
现在我知道*x ^= y
转换为*x = *x ^ *y
但我只需了解一行就能了解其余内容。基本上,在*x = *x ^ *y
中为什么* y总是被设置为* x才能成为交换序列? (或者我也把这个部分弄错了?)如何独家选择* y以及选择什么标准?