--------------------------------------------------------------------------------------------
a^ b^ a=a-------->这个命题是成立的
--------------------------------------------------------------------------------------------
在下例中小写a,b都是指向原始值,大写指向当前值
a=a ^ b(这里记作条件),并记作:第一步这里"b"还是原来的"b"只是"a"变成a ^ b记作A
---------------------------------
根据上面的命题,应该不难推出:
果让b=原来的"a",可以让现在的"A" : a ^ b "^" b即:A^b=a ^ b^b=a
不难看出b的值已经等于原来的a了记作B=a
经过上面的异或运算,现在的B已经是原来的a了.而现在的A还是a ^ b
----------------------------------------------------------------
当前B=a 当前 A=a ^ b
要得到原来的a等于原来的b.看上面两个等式不难推出
可以让A=B^A=a ^ b^ a 的结果赋值给A,改变当前A的值
此时B=a A=b
固:ab交换
1:a=a ^ b
2:b=a ^ b
3:a=a ^ b
或者
b=a ^ b
a=a ^ b
b=a ^ b
在java中是位运算符的一种
^:
位异或运算:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1。
位同或运算:两个数转为二进制,然后从高位开始比较,如果相同则为1,不相同则为0。java中并没有同或运算符,可以通过异或转换得到。同或运算 = 异或运算 ^ 1