首先得知道相同的数异或结果为0,不同的数异或结果为1,且任何数和0异或结果不变。
而且异或操作交换也无影响。a^b^a与a^a^b与b^a^a的结果都是b。
a = a^b; //a的值改变为a和b异或的结果 b = a^b; //相当于(a^b)^b,结果为上一步中a改变前的值,即原a的值 a = a^b; //第二个a是第一步中改变后的a,后面的b为第二步中改变后的b,即a。 //即(a^b)^a,结果为b,即实现互换
a = a^b; //a的值改变为a和b异或的结果 b = a^b; //相当于(a^b)^b,结果为上一步中a改变前的值,即原a的值 a = a^b; //第二个a是第一步中改变后的a,后面的b为第二步中改变后的b,即a。 //即(a^b)^a,结果为b,即实现互换