C#で2つの2進数の合計を求める方法【サンプルコード付き】
C#で2つの2進数の合計を求めるには、まず対象となる2進数を変数に設定します。本記事では、剰余演算と繰り上がり(キャリー)処理を組み合わせて、2進数同士の加算を行うプログラムの実装方法を解説します。
手順1:2進数を設定する
はじめに、加算したい2つの2進数を変数として定義します。ここでは例として次の値を使用します。
val1 = 11110; val2 = 11100;
手順2:displaySum()メソッドを呼び出す
次に、合計を計算して表示するために作成した displaySum() メソッドを呼び出します。
sum = displaySum(val1, val2);
displaySum() メソッド内では、2進数の各ビットを一時的に格納するための新しい配列を用意しています。
long[] sum = new long[30];
アルゴリズムのポイント
このプログラムの核となるのは、以下の処理です。
- 各桁の抽出:
% 10(剰余演算)を使って、各数値の一番右の桁(ビット)を取り出します。 - 桁ごとの加算: 取り出した2つのビットと前の桁からの繰り上がり(
rem)を足し、% 2を適用することで、その桁の値を求めます。 - 繰り上がりの計算: 同じ合計値を
/ 2することで、次の桁への繰り上がりを取得します。 - 桁のシフト:
/ 10で数値を右へ1桁ずつずらしながら、すべての桁を処理するまでループを続けます。
最後に、配列に格納されたビットを逆順に組み合わせることで、正しい2進数の合計が完成します。
完全なコード例
以下は、2進数の合計を計算する完全なサンプルコードです。
using System;
class Demo {
public static void Main(string[] args) {
long val1, val2, sum = 0;
val1 = 11110;
val2 = 11100;
Console.WriteLine("Binary one: "+val1);
Console.WriteLine("Binary two: "+val2);
sum = displaySum(val1, val2);
Console.WriteLine("Sum = {0}", sum);
}
static long displaySum (long val1, long val2) {
long i = 0, rem = 0, res = 0;
long[] sum = new long[30];
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;
while (i >= 0)
res = res * 10 + sum[i--];
return res;
}
}
実行結果
上記のプログラムを実行すると、以下の出力が得られます。
Binary one: 11110 Binary two: 11100 Sum = 111010
このように、10進数の「30」と「28」に相当する2進数「11110」と「11100」を加算すると、「58」に相当する「111010」が正しく求められます。剰余演算と除算を活用したこの手法は、文字列変換を行わずに数値型のまま2進数演算を実現できるシンプルなアプローチです。
-
Pythonの再帰関数を使って自然数の合計を求める方法
再帰関数とは自分自身を呼び出す関数のことを「再帰関数」と呼びます。再帰処理をそのままにしておくと無限ループに陥ってしまうため、再帰呼び出しは必ず条件分岐の中に記述し、特定の条件を満たした時点で処理を終了させるのが基本です。自然数の合計を求めるPythonコード次のプログラムでは、ユーザーから入力された数値を受け取り、それを引数として rsum() 関数に渡します。rsum() 関数は、引数を1ずつ減らしながら自分自身を再帰的に呼び出し続け、引数が1に達したところで再帰を終了します。def rsum(n): if n <= 1: return n else:
-
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