C#で2進数を10進数に変換する方法を解説
C#で2進数を10進数に変換する方法はいくつかありますが、ここではwhileループを使った基本的なアルゴリズムを紹介します。この方法では、入力された2進数の各桁の余り(剰余)を求め、その余りに基数(2のべき乗)を掛けて順次加算していくことで、10進数の値を算出します。
変換の仕組み
2進数「1010」を例に考えてみましょう。各桁を右から順に取り出し、それぞれに1、2、4、8という基数を掛けて合計します。具体的には以下のような流れになります。
- 最下位の桁(余り)を
val % 10で取得する - 余りに現在の基数値を掛けて10進数の結果に加算する
val / 10で処理済みの桁を取り除く- 基数値を2倍して次の桁の重みにする
これらの手順をwhileループで実装したコードがこちらです。
while (val > 0) {
remainder = val % 10;
myDecimal = myDecimal + remainder * baseVal;
val = val / 10;
baseVal = baseVal * 2;
}C#での完全なサンプルコード
それでは、2進数を10進数に変換するC#の完全なプログラムを見てみましょう。
using System;
using System.Collections.Generic;
using System.Text;
namespace Demo {
class toBinary {
static void Main(string[] args) {
int val = 1010, myBinary, remainder;
int myDecimal = 0, baseVal = 1;
myBinary = val;
while (val > 0) {
remainder = val % 10;
myDecimal = myDecimal + remainder * baseVal;
val = val / 10;
baseVal = baseVal * 2;
}
Console.Write("Binary Number : " + myBinary);
Console.Write("\nConverted to Decimal: " + myDecimal);
Console.ReadLine();
}
}
}コードのポイント
- myBinary:元の2進数の値を表示用に保持しておく変数です。ループ内で
valが書き換えられるため、事前にコピーしています。 - baseVal:初期値は1で、ループごとに2倍されることで桁の重み(1、2、4、8…)を表現します。
- remainder:現在注目している桁の数字(0または1)を格納します。
実行結果
上記のプログラムを実行すると、コンソールには以下のように出力されます。
Binary Number : 1010 Converted to Decimal: 10
2進数の「1010」が正しく10進数の「10」に変換されていることが確認できます。この手法はシンプルでありながら、進数変換の基本的な考え方を理解するのに非常に適しています。ぜひ実際にコードを動かして、挙動を確かめてみてください。
-
Pythonで10進数を2進数・8進数・16進数に変換する方法をわかりやすく解説
Pythonには、10進数の整数を2進数・8進数・16進数に変換するための組み込み関数が標準で用意されています。それぞれ以下の関数を使用します。2進数: bin() 8進数: oct() 16進数: hex()これらの関数は、引数に整数を渡すだけで、対応する基数の文字列表現を文字列として返してくれます。非常にシンプルで直感的に使えるのが特徴です。基本的な使い方実際に、10進数の「27」をそれぞれの進数に変換してみましょう。decimal = 27 print(bin(decimal), in binary.) print(oct(decimal), in octal.) print(hex(
-
【Python入門】再帰関数を使って10進数を2進数に変換する方法
10進数を2進数に変換する基本の考え方 10進数を2進数に変換するには、対象の数を2で繰り返し割り算をし、そのたびに得られる余りを記録します。そして計算が終わった後、余りを逆順に出力すると、それが目的の2進数表現になります。 この一連の処理は、再帰(リカージョン)を使うことで非常に簡潔に実装できます。以下がその再帰的な解法です。 再帰を使ったPythonコード def tobin(x): if x > 1: tobin(x // 2) print(x % 2, end=) num = int(input(enter a number)) tobin(nu