C言語で10進数を2進数に変換する方法【関数を使った実装例】
はじめに
C言語では、関数を使うことで10進数を2進数に変換する処理を簡潔に実装できます。本記事では、main()関数から変換用の関数を呼び出し、実際の変換処理をその関数内で行う方法を解説します。
変換のロジック
10進数を2進数に変換する基本的な考え方は、「2で割った余り」を下位の桁から順に並べていくことです。今回使用するロジックは以下のとおりです。
while(dno != 0){
rem = dno % 2;
bno = bno + rem * f;
f = f * 10;
dno = dno / 2;
}このループでは、次の手順で処理が進みます。
- dno % 2 で余り(0または1)を求める
- rem * f を加算し、桁位置に応じた2進数として格納する
- f を10倍して桁を一つ上げる
- dno を2で割った商を次のループに渡す
最終的に、完成した2進数の値をmain()関数へ返します。
サンプルコード:10進数 → 2進数
以下は、10進数を2進数に変換するC言語のサンプルプログラムです。
#include <stdio.h>
long tobinary(int);
int main(void){
long bno;
int dno;
printf("Enter any decimal number : ");
scanf("%d", &dno);
bno = tobinary(dno);
printf("\nThe Binary value is : %ld\n\n", bno);
return 0;
}
long tobinary(int dno){
long bno = 0, rem, f = 1;
while(dno != 0){
rem = dno % 2;
bno = bno + rem * f;
f = f * 10;
dno = dno / 2;
}
return bno;
}実行結果
上記のプログラムを実行すると、次のような結果が出力されます。
Enter any decimal number: 12 The Binary value is: 1100
逆変換:2進数 → 10進数
今度は逆に、2進数を10進数へ変換してみましょう。こちらは各桁の値に2のべき乗を掛け、その合計を求めることで変換できます。
サンプルコード
#include <stdio.h>
#include <math.h>
int todecimal(long bno);
int main(void){
long bno;
int dno;
printf("Enter a binary number: ");
scanf("%ld", &bno);
dno = todecimal(bno);
printf("The decimal value is: %d\n", dno);
return 0;
}
int todecimal(long bno){
int dno = 0, i = 0, rem;
while (bno != 0) {
rem = bno % 10;
bno /= 10;
dno += rem * pow(2, i);
++i;
}
return dno;
}実行結果
上記のプログラムを実行すると、次のような結果が出力されます。
Enter a binary number: 10011 The decimal value is: 19
まとめ
このように、剰余演算(%)と整数除算(/)を組み合わせることで、10進数と2進数の相互変換をシンプルに実装できます。なお、pow()関数を使用する場合は math.h のインクルードが必要になる点に注意しましょう。
-
C++で10進数を2進数に変換するプログラムの書き方
コンピューターの内部では、すべてのデータが2進数(基数2)として扱われています。一方、私たちが日常的に使う10進数は「0〜9」の数字を組み合わせた基数10の記数法です。この記事では、C++を使って入力された10進数を2進数へ変換するプログラムの考え方と実装方法を解説します。10進数から2進数への変換手順10進数を2進数に変換する基本的な方法は、「2で割った余りを順番に記録していく」ものです。具体的には次の手順で行います。まず、変換したい数値を基数である2で割り、商と余りを求めます。余りが0であればその桁は「0」、1であれば「1」として記録します。続いて、得られた商をさらに2で割り、同じように余
-
C++で2進数を10進数に変換するプログラムの作り方
2進数が入力として与えられたとき、その2進数を10進数へ変換するのが本記事のテーマです。 コンピュータにおける10進数は基数10で表現されます。一方、2進数は基数2で表現され、使用するのは0と1という2つの数字だけです。それに対して10進数では、0から9までの任意の数字を扱うことができます。 2進数を10進数に変換するには、右端の桁から順に各桁の数字を取り出し、2のべき乗(0乗から始まり、桁数-1乗まで1ずつ増加)を掛け合わせます。そして、その掛け算の結果をすべて足し合わせることで、最終的な10進数の値が求まります。 以下は、2進数を10進数に変換する流れを図で表したものです。 具体例 入