C语言如何交换两个数

如果你遇到了要交换2个整型的值的问题的话这里也许有你要的东西
以交换a,b的值为例
第一种
有中间变量
如下图
在这里插入图片描述
第二种
无中间变量
涉及位运算还不清楚的点下面
位运算符
在这里插入图片描述
有些人可能会想这不就是给一个法则对应吗
那么按位与&按位或|是不是也可以呢
这么想倒是可以可惜实际上这两种对应法则不行

a=1 b=2
0001 0010

按位与&
第一步a=a&b 0000 这个新a是0 然而0&任何数都是0(第一步就跪了)
按位或|
第一步a=a|b 0011
第二步b=b|a 0011 这一步本来是把原来a的值赋给b 这算出来b=3(跪)

可这原因是什么呢
这跟它们的规则有关
a(新a)=a对应法则b

&    新a  一个位上是0       已知b上同位为0   那原a同位上是啥呢推不出来
|    新a  一个位上是1       已知b上同位为1   那原a同位上是啥呢也推不出来
^    新a  一个位上是01)   已知b上同位为0   那原a同位上是01
发布了24 篇原创文章 · 获赞 41 · 访问量 1649

猜你喜欢

转载自blog.csdn.net/xlwhg/article/details/104214397