剑指offer: 不用加减乘除做加法
生活随笔
收集整理的這篇文章主要介紹了
剑指offer: 不用加减乘除做加法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述:
寫一個函數,求兩個整數之和,要求在函數體內不得使用+、-、*、/四則運算符號。
?
思路分析:
由于不能直接使用四則運算,想到可以用位運算來解決。首先用異或運算可以求得未進位的相加和,即a^b;那么進位的求法可以通過與操作,得到在那幾個位置產生了進位,同時進行左移,即將進位移動到對應位置上,(a&b)<<1。
那么兩數相加就將進位的部分和未進位的部分相加即可,但由于不能直接用加法符號,因此通過循環遞歸做以上操作,直到沒有進位,那么當前的未進位數就是所求的結果。
?
代碼:
1 class Solution { 2 public: 3 int Add(int num1, int num2) 4 { 5 6 while(num2!=0) 7 { 8 int Xor = num1^num2; 9 int forward = (num1&num2)<<1; 10 num1 = Xor; 11 num2 = forward; 12 } 13 return num1; 14 } 15 };?
轉載于:https://www.cnblogs.com/LJ-LJ/p/11048116.html
總結
以上是生活随笔為你收集整理的剑指offer: 不用加减乘除做加法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云计算面试题及答案,云计算主要就业岗位
- 下一篇: 万字长文浅析SpringCould微服务