异或运算交换两个数的值

简介: 异或运算交换两个数的值

交换两个数的值(利用两个数的和,再做减法交换两个数)

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的这个位数就需要取反。


后面还没有想的很清楚,还要再思考,等待后续。。


相关文章
|
7月前
|
存储 算法 JavaScript
判断奇偶数
判断奇偶数
|
算法
把数组里面数值排成最小的数
把数组里面数值排成最小的数
36 1
交换两个数的值的方法(三种)
交换两个数的值的方法(三种)
70 1
不使用第三变量。如何对2个数进行交换
不使用第三变量。如何对2个数进行交换
82 0
|
7月前
|
Python
计算小于或等于n的非负整数区间包含的1的数量
计算小于或等于n的非负整数区间包含的1的数量
65 0
判断数的奇偶性
判断数的奇偶性
98 0
|
机器学习/深度学习
欧拉函数:求小于等于n且与n互质的数的个数
求小于等于n且与n互质的数的个数 互质穷举法 互质:两个数互质代表两者最大公约数为1 最大公约数求法:辗转相除法,最小公倍数:较大值除以最大公约数乘以较小值 辗转相除法: 较大的数a取模较小的数b,得取模值c 若取模值等于0 则最大公约数为取模值,否则继续下一步 a与c再次取模,回到第二步 //求最大公约数gcd以及最大公倍数lcm // 36 24 36/24 // 24 12 24/12 // 0 结束最大公约数为12 // 求最小公倍数 // lcm(a, b) = (a * b)/g
144 0
判断一个数是否是对称数(数组/非数组解法)
判断一个数是否是对称数(数组/非数组解法)
|
机器学习/深度学习
【每日一题Day84】LC2283判断一个数的数字计数是否等于数位的值 | 哈希表
思路:使用哈希表统计每个数字出现的次数,再与字符串中的次数进行比较,如果所有数字次数均等于字符串中的次数,返回true;反之,返回false
62 0