【C言語】16進数・2進数の文字列をprintf関数で表示する方法

はじめに、C言語で16進数や2進数を表示する方法について解説します。

目次

C言語での16進数表示方法

C言語での16進数表示方法には、printf関数とscanf関数を用いた方法があります。

printf関数を用いた16進数表示方法

printf関数を使って16進数を表示する場合は、書式指定子 %x を使用します。以下は例です。

int num = 255;
printf("numの値は%xです。\n", num);

上記のコードでは、変換指定子 %x を使用して num の値を16進数で出力しています。実行結果は以下のようになります。

numの値はffです。

scanf関数を用いた16進数入力方法

scanf関数を使ってユーザーから入力された16進数を読み込む場合も、書式指定子 %x を使用します。以下は例です。

int num;
printf("16進法で表された整数値を入力してください:");
scanf("%x", &num);
printf("入力された値は%d(10進)または%x(16進)です。\n", num, num);

上記のコードでは、変換指定子 %x を使用してユーザーから入力される値が16進法であることを示し、その後にアドレス演算子 & をつけて変更先メモリアドレスへポインタ渡しすることで、ユーザーから受け取った16進数表記の文字列が数値として格納されるようになっています。

実行結果は以下のようになります。

16進法で表された整数値を入力してください:1a
入力された値は26(10進)または1a(16進)です。

ちなみに%x%Xにすることで、16進表記のアルファベットが大文字になります。

C言語での2進数表示方法

C言語で2進数を表示する方法について解説します。

printf関数を用いた2進表記法による表示方法

printf関数には数値を2進数に変換して出力するフォーマットが用意されておらず、関数を自作する必要があります。

#include <stdio.h>


void print_binary(unsigned int num) {
    if (num > 1) {
        print_binary(num / 2);
    }
    putchar(num % 2 ? '1' : '0');
}

int main()
{
    unsigned int num = 10;  // 10進数の数値

    printf("%dの2進数表記は", num);
    print_binary(num);
    printf("です。\n");

    return 0;
}
10の2進数表記は1010です。

このプログラムでは、自作の関数print_binaryを定義しています。

この関数では、再帰的に数値を2で割っていき、余りを順番に出力しているため、最終的には2進数表記が出力されます。

関数の引数にはunsigned intを使用しています。これは、負の値を扱わないためです。

まとめ

C言語での16進数表示方法と2進数表示方法について、それぞれprintf関数やscanf関数を用いた方法などを紹介しました。

プログラミング初心者でもわかりやすく解説したので、ぜひ参考にしてみてください。

目次