首頁 >後端開發 >C++ >在C語言中,將兩個整數進行位元遞歸相加

在C語言中,將兩個整數進行位元遞歸相加

WBOY
WBOY轉載
2023-09-05 21:17:031260瀏覽

在C語言中,將兩個整數進行位元遞歸相加

在這個問題中,我們得到了兩個數字。我們的任務是建立一個 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&rsquo;

以上是在C語言中,將兩個整數進行位元遞歸相加的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除