2011-08-07 49 views
1

我明白這個解決方案的工作原理。在不使用任何算術運算符的情況下添加兩個數字的說明

int add_no_arithm(int a, int b) { 
    if (b == 0) return a; 
    int sum = a^b; // add without carrying 
    int carry = (a & b) << 1; // carry, but don’t add 
    return add_no_arithm(sum, carry); // recurse 
} 

但在這個問題筆者批示:

「我們在這類問題的第一反應應該是,我們將有位工作爲什麼呢?因爲當你?拿走+號,我們還有什麼其他選擇?另外,這就是計算機如何做的。「

作者試圖暗示什麼?

回答

3

他的意思很簡單 - 如果您沒有+操作,則需要在整數的位級複製行爲。您發佈的代碼與ALU(算法邏輯單元,計算在CPU中執行的地方)中原生執行的操作大致相同。

+0

非常感謝你 –

相關問題