如何只用与或非运算,且不用第三个变量,也不用任何函数来交换两个数的值.

来源:百度知道 编辑:UC知道 时间:2024/07/02 10:58:57

用异或操作就可以交换两个数了( ^ 就是异或操作)
b = a ^ b;
a = a ^ b;
b = a ^ b;
因为:a ^ b ^ b = a,这是异或的一个特性

如果异或用于或非表示的话,就是:a ^ b = (a or b) and (!a or !b)
注:
a or b 表示"a 或 b"
a and b 表示"a 与 b"
!a 表示 "非a"

所以可以这样交换两个数:
b = (a or b) and (!a or !b);
a = (a or b) and (!a or !b);
b = (a or b) and (!a or !b);

三次XOR

void Swap(int& x, int& y){ x = x ^ y; y = x ^ y; x = x ^ y;}