`
name327
  • 浏览: 162884 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

异或运算的妙用,两个整型变量交换位置

 
阅读更多

异或运算符号 ^

按照二进制的位进行异或运算 两个位分别为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类型

 

 

0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics