swap函数完成变量a,b的交换。
void swap(){ a=a^b; b=b^a; a=b^a; }
分析:首先对于异或二进制两数运算结果为:
0^0=0; 0^1=1; 1^0=1; 1^1=0;
异或规律:一个数异或两次另外一个数等于原来那个数,即a ^ b ^ b=a(位置可交换); 由此不难得出:
a=a^b;//第一个a相当于一个中间变量 b=b^a=b^a^b=a; a=b^a=a^a^b=b;//这里b=a,a=a^b