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)が残っている場合は、それを配列に追加してから出力する点が重要です。計算結果は逆順に格納されているため、最後に配列を後ろから順に出力しています。
-
再帰を使って2つの数の積を求めるPythonプログラム
再帰(リカージョン)の手法を用いて2つの数値の積を求めるには、シンプルなif条件と再帰呼び出しを組み合わせます。再帰とは、大きな問題をより小さな部分問題に分割して計算し、その結果を組み合わせることで全体の解を導き出す手法です。掛け算を「足し算の繰り返し」として捉えることで、再帰的に積を計算できます。サンプルコード以下に具体的な実装例を示します。def compute_product(val_1,val_2): if(val_1<val_2): return compute_product(val_2,val_1) &nb
-
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