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

异或运算符号 ^

按照二进制的位进行异或运算 两个位分别为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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值