不使用中间变量交换值
目录
如有 a,b 两个变量, 思路是先某种运算使 a 储存 a,b 的全部信息, 然后用 b 与 a 进行逆运算使 b 得到 a 的初始值, 然后用 a 与 b 逆运算赋值给 a.
用群论的说法是: 或运算的集合 G_or({1,0},or) , 与运算的集合G_and({1,0},and)
G_or 与 G_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;