参考:https://blog.csdn.net/wwt18811707971/article/details/78291490
这篇文章已经写得很好了~主要自己在完全小白,背后的道理还是理解理解之后才知道的。
下面写下,自己在意和注意到的点:
- 0 异任何数——》等于任何数
- 1 异任何数——》等于相反的数
- A ^ A= 0 //交换关键
- A ^ 0= A //交换关键
所以在a,b之间交换;
【思路】:
b=a^b^b;
a=b^……(a,b 都为 偶数个数 相异)
【最后方案】:
(粗体 意为不是真实写法,只是,帮助理解;a^b应该为a; a^b^b应该为b;)
a=a^b;
b=a^b^b; //只剩下a,完成交换
a=a^b^b^a^b; //前三个是b真正的值,后两个是a真正的值;
//前面四个变成0,只剩下b,完成交换
【附上真正】:
a=a^b;
b=b^a;
a=a^b;