a^=b;
b^=a;
a^=b;
//三行代码,为什么要写,因为可能面试的时候会简单问一句
例如:
a = 5,二进制为101
b = 3,二进制为011
异或表示a的整数位与b的整数位信息的所有不同信息
step 1 :求出两个数字哪些位不一样,这里是第一和第二位不同
a = a^b; 101^011 = 110 a = 6
step 2 :b的值还没发生改变,那么b的每一位是确定的,原始的a和b的那些位不同,也是确定的,这个时候异或就得到与b相反的“a”值,即交换的值
b = a^b; 110^011 = 101 b=5;交换成功
step 3:同上一步,知道原始值,知道哪些位不同,那么不同的位0换成1、1换成0,就能得到未知的值
a = a^b; 110^101 = 011 a=3;交换成功