位运算求a+b
位運算
給出兩個整數 a 和 b, 求他們的和。
挑戰
顯然你可以直接 return a + b,但是你是否可以挑戰一下不這樣做?(不使用+++等算數運算符)
鏈接linkcode題目:a+b
分析
主要利用異或運算來完成,異或運算有一個別名叫做:不進位加法,那么a ^ b就是a和b相加之后,該進位的地方不進位的結果,然后下面考慮哪些地方要進位,自然是a和b里都是1的地方, a & b就是a和b里都是1的那些位置,a & b << 1 就是進位之后的結果。
所以:a + b = (a ^ b) + (a & b << 1),令a' = a ^ b, b' = (a & b) << 1可以知道,這個過程是在模擬加法的運算過程,進位不可能一直持續,所以b最終會變為0。因此重復做上述操作就可以 求得a + b的值。
總結
- 上一篇: 账户余额和可用余额为什么不一样
- 下一篇: 通信原理随机信号分析