先举个例子;
int a=6 b=12
6的二进制:0110;
12的二进制:1100;
0110 1010 1010
^1100 ^1100 ^0110
--------- ------------- ----------------
1010 0110 1100
a=a^b; // a=0110^b=1010
b=a^b; // b=1010^b=0110 = 6
a=a^b; // a=1010^b=1100 =12
原理:一个数异或同一个数两次还是它本身;
int a=6,b=12;
a=a^b;
b=a^b; // 把a替换成a^b,相当于b=a^b^b,这个时候b=6=a;
a=a^b; //把a替换成a^b,b= a,相当于a=a^b^a= b^a^a =b = 12;
|