ホームページ  >  記事  >  バックエンド開発  >  C での 2 つの整数のビット単位の再帰加算

C での 2 つの整数のビット単位の再帰加算

WBOY
WBOY転載
2023-09-05 21:17:031226ブラウズ

C での 2 つの整数のビット単位の再帰加算

#この問題では、2 つの数字が与えられています。私たちのタスクは、2 つの整数をビットごとに再帰的に加算するための C プログラムを作成することです。

ビット演算を使用した合計のロジックは、幼稚園で行ったものと似ています。つまり、通常は数値の各桁を加算し、キャリーが存在する場合はそれを次の数値に加算します。

XOR 演算子を使用して合計し、AND 演算子を使用してキャリーをチェックして、同様のことを行います。キャリーがある場合はそれを数値に加算し直しますが、そうでない場合は加算しません。

これは、デジタル エレクトロニクスで学んだかもしれない

半加算器 のロジックです。ここを参照してください...

ここで、合計は a^b、つまり XOR b を使用して計算されます。両方の最初のビットが設定されている場合は、余分なキャリーを伝播する必要があるかどうかを確認する必要があります。数値に追加の設定ビットを追加する必要があります。

したがって、ビット単位の算術演算は次のようになります。

ステップ 1 - a と b の XOR、つまり a^b を見つけて、結果変数に格納します。

ステップ 2 - {(a & b)

ステップ 2.1 - 0 に等しい場合、次に、結果を出力します。これが最終結果です。

ステップ 2.2 - 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 での 2 つの整数のビット単位の再帰加算の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。