在這個問題中,我們得到了兩個數字。我們的任務是建立一個 C 程序,用於兩個整數的位元遞歸加法。
使用位元運算求和的邏輯與我們在學前班時所做的類似。為了求和,我們通常會將數字的每個數字相加,如果存在進位,我們將其加到下一個數字。
我們將做類似的事情,使用 XOR 運算子求和並使用 AND 運算檢查進位。如果有進位,我們會將其加回數字,否則不會。
這是您可能在數位電子學到的半加法器的邏輯。請參閱此處...
現在,總和是使用 a^b 計算的,即 XOR b,如果兩者的第一位都設定了,我們需要檢查是否需要傳播額外的進位。我們需要在數字中添加一個額外的設定位。
因此,位元演算法將是
步驟 1 - 求 a 和 b 的 XOR即 a^b 並將其儲存在結果變數中。
第2 步驟 - 檢查是否{(a & b)
步驟2.1 - 若等於0,則列印結果,即為最終結果。
步驟2.2 - 如果不等於0等於 0,然後轉到步驟 1,其中 a = {(a & b)
說明此函數運作原理的程式演算法 -
現場示範
#include <stdio.h> int addNumbers(int a, int b) { int carry = (a & b) << 1; int result = a^b; if (carry == 0) return result; else addNumbers(carry, result); } int main(){ int a = 54, b = 897; printf("The sum of %d and %d using bitwise adding is %d", a, b, addNumbers(a, b)); return 0; }
The sum of 54 and 897 using bitwise adding is 951’
以上是在C語言中,將兩個整數進行位元遞歸相加的詳細內容。更多資訊請關注PHP中文網其他相關文章!