如果你遇到了要交换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 一个位上是0(1) 已知b上同位为0 那原a同位上是0(1)