异或运算符号 ^
按照二进制的位进行异或运算 两个位分别为1、0(不分前后)结果为1,其他都为0
例如
十进制 二进制
1 1
2 10
3 11
4 100
5 101
1^2
01
10
结果二进制就是11 转换成十进制就是3
4^5
100
101
结果是1 转换成十进制还是1
根据上面的我们再来看
1^2=3
3^2=?
3的二进制11 2的二进制10
很显然结果是1
4^5=1
4^1=5
5^1=4
根据这些 可以得出
如果
a^b=c 成立
那么可以推算出
a^c=b
b^c=a
这个特点可以用来两个数字交换
int x=1; //公式中的a
int y=2; //公式中的b
x=x^y; //x变成公式中的c
y=x^y;//这句相当于 b^c可以得出a ,这时候y就有了原来a的值 y=a
x=x^y;//这句中 x=c y=a c^a=b 这时候x就有了原来b的值 x=b
//到这里
//x=2 y=1
//两数字交换完成,没有用到中间变量
以上方法支持int 和long类型