交换两个数的值(利用两个数的和,再做减法交换两个数)
a=5.b=10
a=a+b 此时a=15
b=a-b 此时b=10
a=a-b 此时a=5
开始把式子写成了a=a+b-a,后面写不下去了,一直思考为什么要有a=a+b 这个步骤,其实a=a+b-a推出来就是a=b,也就是把b的值直接赋值给a,后面当然没法做了,这是内存,值是会覆盖的。题目的解题思路就是利用两个数的和,所以必要要有第一步,接着后面的逻辑就清楚了。
交换两个数的值通常就都是创建一个临时变量,还有一种是利用的二进制,异或运算。
异或运算两种理解:
一种是相同为0,不同为1,
另一个角度是:
当左边的数为0时,其结果就和右边的数一样
当左边的数为1时,其结果就和右边的数取反
所以a ^ b就是:
左边的a,如果位数为0,表示原值a和b的这个位数是一样的,那么b的这个位数就不需要改
左边的a,如果位数为1,表示原值a和b的这个位数是不一样的,那么b的这个位数就需要取反。
后面还没有想的很清楚,还要再思考,等待后续。。