https://blog.csdn.net/u011402896/article/details/80727163
原理见下文:https://blog.csdn.net/borefo/article/details/4622288
A=A^B;B=A^B;A=A^B;
可以认为异或一次之后的A表示对AB相等状态的一个判断器,B=A^B表示B与异或之后的A再判断,对于A里面为1的位,表示在这一位上原来的A和B不同,那么异或后B的这一位变成和A相同;对于A里面为0的位,表示这一位上原来的A和B相同,异或后保持不变。这样,B=A^B将B变成原来的A。同理,A=A^B则将“判断器”和原来的A比较,从而得到原来的B。实现了AB的互换。
另外:
C++中x&(x-1)是什么意思(京东笔试)
https://blog.csdn.net/sandwichsauce/article/details/79847953