【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進数表記が出力されます。
まとめ
C言語での16進数表示方法と2進数表示方法について、それぞれprintf関数やscanf関数を用いた方法などを紹介しました。
プログラミング初心者でもわかりやすく解説したので、ぜひ参考にしてみてください。