C言語で10進数を2進数に変換するプログラムの書き方
概要
本記事では、10進数(基数10)で表された整数を2進数(基数2)に変換するC言語のプログラムを解説します。整数は32ビットであると仮定し、対象の数値を基数である2で繰り返し割ることで変換を行います。この変換処理は、コンピュータが整数値をバイト列(バイナリデータ)へ変換する際にも使われる、非常に基本的な仕組みです。
入力: 10 出力: 1010
アルゴリズムの解説
ここでは、10進数の「10」を例に、変換の具体的な手順を見ていきましょう。
10 を 2 で割ると余りは 0。よって「0」を記録します。
続いて 10 ÷ 2 = 5 を新しい数値として扱います。
5 を 2 で割ると余りは 1。よって「1」を記録します。
続いて 5 ÷ 2 = 2。
2 を 2 で割ると余りは 0。よって「0」を記録します。
続いて 2 ÷ 2 = 1。
1 を 2 で割ると余りは 1。よって「1」を記録します。
続いて 1 ÷ 2 = 0 となり、数値が 0 になった時点で計算を終了します。
最後に、記録した余りを逆順に出力します。その結果「1010」が得られ、これが 10 の 2進数表現となります。
サンプルコード
#include <iostream>
using namespace std;
int main() {
long n, d, r, binary = 0;
n = 10;
d = n;
int temp = 1;
while (n != 0) {
r = n % 2;
n = n / 2;
binary = binary + r * temp;
temp = temp * 10;
}
printf("%ld", binary);
return 0;
}
コードのポイント
このプログラムは、以下の流れで変換処理を行っています。
n % 2:現在の数値を2で割った余り(0 または 1)を求めます。これが各桁のビット値になります。n = n / 2:数値を2で割って更新し、次の桁の計算に備えます。binary = binary + r * temp:余りにtemp(10の累乗)を掛けて加算することで、余りを正しい桁位置に配置していきます。temp = temp * 10:桁を一つ左にずらすため、tempを10倍します。nが 0 になった時点でループを終了し、結果を出力します。
なお、この手法は結果を long 型の数値として保持しているため、桁数の多い大きな値を変換する場合はオーバーフローに注意が必要です。実務では、各ビットを文字列や配列に格納して出力する方法が使われることも多く、より安全で汎用的な実装と言えます。
-
Pythonで10進数を2進数に変換する方法|再帰処理とbin()関数の実装例
この記事では、「10進数を2進数に変換する」という問題に対する解決策を、具体的なコード例とともにわかりやすく解説します。 問題の概要 問題: 与えられた10進数の整数を、それに対応する2進数表現へ変換する。 この問題を解くには、大きく分けて2つのアプローチがあります。順番に見ていきましょう。 方法1:再帰を使った実装 10進数を2進数に変換する基本的な考え方は、「数値を2で割り続け、その余りを記録する」ことです。再帰関数を使うと、除算を繰り返しながら余りを自動的に上位の桁から順に出力できます。 サンプルコード def DecimalToBinary(num): if num &g
-
Pythonで10進数を2進数に変換する方法|再帰と組み込み関数の2つのアプローチ
この記事では、10進数で表された数値を2進数に変換するPythonプログラムについて、その考え方と具体的な実装方法をわかりやすく解説します。 問題文 ある整数が与えられたとき、その数値を2進数に変換します。例えば、10進数の「35」は2進数では「100011」と表現されます。 アプローチ1:再帰を使った解法 再帰処理を利用すると、シンプルなコードで10進数を2進数に変換できます。基本的な流れは以下の擬似コードのとおりです。 DecToBin(num): if num > 1: &n