1. 程式人生 > >劍指offer——42.不用加減乘除做加法

劍指offer——42.不用加減乘除做加法

題目描述:

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

解題思路:

1.每次先異或,求得多少相同位上有一個1

2.再與並向左進一位,求得有多少個位有兩個1產生進位後的結果

3.將1和2得到的結果再進行相加,即重複1和2的操作,直到不再產生進位,即為所求結果

class Solution {
public:
    int Add(int num1, int num2)
    {
        int t1,t2;
        while(num2 != 0)
        {
            t1 = (num1^num2);
            t2 = ((num1&num2)<<1);
            num1 = t1;
            num2 = t2;
        }
        return num1;
    }
};