天天看點

[面試題] 不用算術運算符實作兩個數的加法

思路:将兩個數當作二進制數來處理,比方說6(110)+5(101)=11(1011),可以将二進制的加法過程分成兩部分來處理:先不考慮進位求得兩數的和(即兩數按位異或),然後再将産生的和與進位結果(即兩數按位與然後左移一位)相加,後面這一相加過程可以遞歸調用add函數來實作。

代碼如下:

int add(const int a, const int b)
{
    return b ==  ? a : add(a^b, ((a&b) << ));
}
           

繼續閱讀