目录

目录

不使用中间变量交换值

目录

如有 a,b 两个变量, 思路是先某种运算使 a 储存 a,b 的全部信息, 然后用 b 与 a 进行逆运算使 b 得到 a 的初始值, 然后用 a 与 b 逆运算赋值给 a.

用群论的说法是: 或运算的集合 G_or({1,0},or) , 与运算的集合G_and({1,0},and)

G_orG_and 都满足封闭性与结合律, 单位元 e_or==0,e_and==1, 但是 G_or 中 1 没有逆元, G_and 中 0 没有逆元. 异或运算集合 G_xor({1,0},xor)中,e_xor==0 , 1 xor 1 == 0 , 0 xor 0 == 0 .

所以与变量的数域构成群的运算可以用来交换变量.

a=a+b;
b=a-b;
a=a-b;
a=a^b;
b=a^b;
a=a^b;