Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

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 のインクルードが必要になる点に注意しましょう。

  1. C++で10進数を2進数に変換するプログラムの書き方

    コンピューターの内部では、すべてのデータが2進数(基数2)として扱われています。一方、私たちが日常的に使う10進数は「0〜9」の数字を組み合わせた基数10の記数法です。この記事では、C++を使って入力された10進数を2進数へ変換するプログラムの考え方と実装方法を解説します。10進数から2進数への変換手順10進数を2進数に変換する基本的な方法は、「2で割った余りを順番に記録していく」ものです。具体的には次の手順で行います。まず、変換したい数値を基数である2で割り、商と余りを求めます。余りが0であればその桁は「0」、1であれば「1」として記録します。続いて、得られた商をさらに2で割り、同じように余

  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進数に変換する流れを図で表したものです。 具体例 入