例如交换两个整数a=10100001,b=00000110的值,可通过下列语句实现:
a = a^b; //a=10100111
b = b^a; //b=10100001
a = a^b; //a=00000110
原因:
1 0^N == N
2 11..1^N == ~N
3 N^N == 0
4 N^M == M^N
5 (L^N)^M == L^(N^M) (可推广到任意个数,同一位1、0个数不变,位置任意变化,按位异或结果不变)
异或运算的关键点是:同一位1、0个数不变,位置任意变化,按位异或结果不变