不用加減乘除做加法(38)

題目

【寫一個函數,求兩個整數之和,要求在函數體內不得使用+、-、*、/四則運算符號】


1、分析
由於不能使用加減乘除,所以只能使用位運算來進行解決。將數字都轉換成二進制來進行位運算。

  • 首先將兩個數字各位進行 異或 運算,此時未考慮兩個都是 1 的數字進位。
  • 再將兩個數字各位進行 運算,來獲取進位的情況
  • 最後再將進位的數字加到前一位即可
    2、代碼
class Solution {
public:
    int Add(int num1, int num2)
    {
        int sum, carry;
        do
        {
            sum=num1^num2;
            carry=(num1 & num2)<<1;
            num1=sum;
            num2=carry;
        }
        while(num2!=0);
        return num1;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章