【C言語】2進数10進数変換サンプル

プログラミング・Web開発カテゴリを表すパンダのイラスト プログラミング・Web開発

C言語による2進数と10進数を相互に変換するサンプルプログラムです。IPv4アドレス程度(0〜255)の簡易的な変換をコマンドライン引数から行います。

前提条件・仕様

  • 第1引数にモード(2進数から10進数への変換は 2、10進数から2進数への変換は 10)を指定します。
  • 第2引数に変換したい数値を指定します。

サンプルコード

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int flg;
    int decimal = 0;
    int binary = 0;
    int base = 1;
    int tmp = 0;

    if (argc < 3) {
        printf("Usage: %s [2|10] [value]\n", argv[0]);
        return 1;
    }

    flg = atoi(argv[1]);
    if (flg == 2)
    {
        binary = atoi(argv[2]);
        tmp = binary;
        /* 2進数を10進数に変換 */
        while (binary > 0) {
            decimal = decimal + (binary % 10) * base;
            binary = binary / 10;
            base = base * 2;
        }
        /* 変換した10進数の出力 */
        printf("入力(2進): %08d -> 10進数: %d\n", tmp, decimal);
    }
    else if (flg == 10)
    {
        decimal = atoi(argv[2]);
        tmp = decimal;
        /* 10進数を2進数に変換 */
        while (decimal > 0) {
            binary = binary + (decimal % 2) * base;
            decimal = decimal / 2;
            base = base * 10;
        }
        /* 変換した2進数の出力 */
        printf("入力(10進): %d -> 2進数: %08d\n", tmp, binary);
    }
    else
    {
        printf("第1引数には 2 または 10 を指定してください。\n");
    }

    return 0;
}

実行方法と出力例

コンパイルして実行する際の例です。

コンパイル

gcc -o conv_sample conv_sample.c

1. 2進数から10進数への変換(例: 1010)

$ ./conv_sample 2 1010
入力(2進): 00001010 -> 10進数: 10

2. 10進数から2進数への変換(例: 10)

$ ./conv_sample 10 10
入力(10進): 10 -> 2進数: 00001010

この記事の更新履歴

この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。

2026年9月26日

  • 変更引用タグ内に記述されていたコードを正しい構文のコードブロックに変更しました。
  • 追加decimal変数の初期化漏れを修正し、コンパイル・実行方法と実行例を追加しました。

文書情報

記事タイトル
【C言語】2進数10進数変換サンプル
作成日
更新日
Source URL
https://papanda925.com/?p=623

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました