异或运算符 ^
不同则为1,相同则为0 。
eg:两个二进制数 a:10110
b:00111
则a^b:10001
性质:
1.0^N=N; N^N=0;
2.交换律:a^b=b^a;
3.结合律:(a^b)^c=a^(b^c);
应用于数值交换,不用临时量(前提两个值的存储空间不同,否则交换后为0)
void swap(int &a,int &b){
int temp = a;
a = b;
b = temp;
}
i = i ^ j;
j = j ^ i; //j=j^(i^j)=(j^j)^i=0^i=i;
i = i ^ j; //i=i^(j^i)=(i^i)^j=0^j=j;
还可以理解为无进位相加
eg:1^2=3;
1:01;2:10;1^2 = 11 = 3;
7^8=15;
7:0111;8:1000;7^8 = 1111 = 15;