Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C++のビットを使用して2つの符号なし数値を追加します。


ビットのストリームとして表される符号なしの数値は、2進形式で書き込まれます。

54のバイナリ形式は110110です。

ビットを使用して2つの数値を加算し、バイナリ加算ロジックを使用してそれらのバイナリ形式を加算します。

ビット加算のルールは-

です
  • 0 + 0 =0
  • 1 + 0 =1
  • 0 + 1 =1
  • 1 + 1 =0、キャリー=1

2つの数字を追加する例を見てみましょう。

Input: a = 21 (10101) , b = 27 (11011)
Output: 48 (110000)

説明 − 10101 +11011=110000。最下位ビットからビットを追加します。そして、次のビットに伝播します。

#include <bits/stdc++.h>
#define M 32
using namespace std;
int binAdd (bitset < M > atemp, bitset < M > btemp){
   bitset < M > ctemp;
   for (int i = 0; i < M; i++)
      ctemp[i] = 0;
   int carry = 0;
   for (int i = 0; i < M; i++) {
      if (atemp[i] + btemp[i] == 0){
         if (carry == 0)
            ctemp[i] = 0;
         Else {
            ctemp[i] = 1;
            carry = 0;
         }
      }
      else if (atemp[i] + btemp[i] == 1){
         if (carry == 0)
            ctemp[i] = 1;
         else{
            ctemp[i] = 0;
         }
      }
      else{
         if (carry == 0){
            ctemp[i] = 0;
            carry = 1;
         }
         else{
            ctemp[i] = 1;
         }
      }
   }
   return ctemp.to_ulong ();
}
int main () {
   int a = 678, b = 436;
   cout << "The sum of " << a << " and " << b << " is ";
   bitset < M > num1 (a);
   bitset < M > num2 (b);
   cout << binAdd (num1, num2) << endl;
}

出力

The sum of 678 and 436 is 1114

  1. 2つの数値を追加するC++プログラム

    加算は基本的な算術演算です。 2つの数値を加算するプログラムは、2つの数値の加算を実行し、それらの合計を画面に出力します。 2つの数字の加算を示すプログラムは次のとおりです- 例 #include <iostream> using namespace std; int main() {    int num1=15 ,num2=10, sum;    sum = num1 + num2;    cout<<"Sum of "<<num1<<" and &q

  2. Pythonで2つの数値を追加する

    空でないリンクリストを2つ指定したとします。これらの2つのリストは、2つの非負の整数を表しています。数字は逆の順序で保存されます。各ノードには1桁しか含まれていません。 2つの数値を加算し、結果をリンクリストとして返します。 2つの数値には、数値0自体を除いて、先行ゼロが含まれていないと想定しています。したがって、数値が120 + 230の場合、リンクリストは[0→2→1]+[0→3→2]=[0→5→3]=350になります。 これを解決するために、次の手順に従います 2つのリストl1とl2を取ります。ヘッドと温度をnullとして初期化します c:=0 l1とl2はどちらも空でないリスト