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