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

C#でメソッドを使わずに2つの2進数の合計を求める方法

この記事では、C#において組み込みメソッドを使用せずに、2つの2進数の合計を求める方法を解説します。剰余演算とループ処理を組み合わせることで、各桁を手動で加算していくアプローチを紹介します。

手順1:変数の宣言と初期化

まず、2進数を格納する2つの変数を宣言し、初期化します。

val1 = 11010;
val2 = 10100;

Console.WriteLine("Binary one: " + val1);
Console.WriteLine("Binary two: " + val2);

手順2:ループで各桁を加算する

合計を求めるには、両方の値が0になるまでループ処理を続けます。各反復処理の中で、最下位桁を取り出して加算し、繰り上がり(桁上げ)を考慮しながら計算を進めます。

while (val1 != 0 || val2 != 0) {
    sum[i++] = (val1 % 10 + val2 % 10 + rem) % 2;
    rem = (val1 % 10 + val2 % 10 + rem) / 2;
    val1 = val1 / 10;
    val2 = val2 / 10;
}

アルゴリズムのポイント

  • val1 % 10:各数値の最下位桁(1の位)を取り出します。
  • % 2:2進数の各桁は0か1のみなので、合計を2で割った余りがその桁の値になります。
  • / 2:桁の合計が2以上の場合は繰り上がりが発生するため、2で割った商を次の桁への繰り上がりとして保持します。
  • / 10:処理済みの桁を取り除き、次の桁へ移動します。

それでは、2つの2進数の合計を求める完全なコードを見てみましょう。

サンプルコード

using System;
class Demo {
    public static void Main(string[] args) {
        long val1, val2;
        long i = 0, rem = 0;
        long[] sum = new long[30];
    
        val1 = 11010;
        val2 = 10100;

        Console.WriteLine("Binary one: " + val1);
        Console.WriteLine("Binary two: " + val2);

        while (val1 != 0 || val2 != 0) {
            sum[i++] = (val1 % 10 + val2 % 10 + rem) % 2;
            rem = (val1 % 10 + val2 % 10 + rem) / 2;
            val1 = val1 / 10;
            val2 = val2 / 10;
        }

        if (rem != 0)
        sum[i++] = rem;
        i = i - 1;
        Console.Write("Sum = ");

        while (i >= 0)
        Console.Write(sum[i--]);
    }
}

実行結果

Binary one: 11010
Binary two: 10100
Sum = 101110

このように、ループと剰余演算を組み合わせることで、Convert.ToInt32などの組み込みメソッドに頼らずに2進数同士の加算を実現できます。ループ終了後も繰り上がり(rem)が残っている場合は、それを配列に追加してから出力する点が重要です。計算結果は逆順に格納されているため、最後に配列を後ろから順に出力しています。

  1. 再帰を使って2つの数の積を求めるPythonプログラム

    再帰(リカージョン)の手法を用いて2つの数値の積を求めるには、シンプルなif条件と再帰呼び出しを組み合わせます。再帰とは、大きな問題をより小さな部分問題に分割して計算し、その結果を組み合わせることで全体の解を導き出す手法です。掛け算を「足し算の繰り返し」として捉えることで、再帰的に積を計算できます。サンプルコード以下に具体的な実装例を示します。def compute_product(val_1,val_2):    if(val_1<val_2):       return compute_product(val_2,val_1) &nb

  2. Pythonで自然数の合計を求める3つの方法【while文・for文・sum関数】

    Pythonでは、自然数の合計を求める方法がいくつかあります。この記事では、whileループ、forループ、そして組み込み関数sum()を使った3つの方法を、具体的なコード例とともにわかりやすく解説します。 方法1:whileループを使う whileループを使用すると、変数iの値を1ずつ増やしながら、その値を累積的に加算していくことができます。以下の例では、最初の10個の自然数(1から10まで)の合計を計算しています。 s,i=0,0 n=10 while i<n: i=i+1 s=s+i print ("sum of first 10 natural num