本ブログでは、以前、10進数を2進数、8進数、16進数に変換するプログラムをご紹介した。
今回は、printf関数を使って8進数と16進数を表示するプログラムをご紹介しよう。
なお、本プログラムは、Windows 11 Home(23H2)上で、Visual Studio Code(1.87.2)を使用して作成し、gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 でコンパイルしている。
C言語のインストールについてはこちらをご参照ください。↓
10進数で読み込んだ正の整数値を8進数と16進数で表示するプログラム
//10進数で読み込んだ正の整数値を8進数と16進数で表示するプログラム
#include <stdio.h>
int main(void)
{
unsigned n;
printf("正の整数値:");
scanf("%u",&n);
printf("8進数は0%oです\n",n);
printf("16進数は0x%xです\n",n);
return 0;
}
正の整数値:357
8進数は0545です
16進数は0x165です
念のため、先にご紹介した基数変換のプログラムでも試してみた。
10進数を基数変換します
変換する非負の整数:357
何進数に変換しますか(2-36) :8
8進数では545です
もう一度しますか(1-yes,0-no) :1
変換する非負の整数:357
何進数に変換しますか(2-36) :16
16進数では165です
もう一度しますか(1-yes,0-no) :0
整数を表示する際の基数の指定
printf関数では、10進数だけでなく、8進数と16進数での出力ができる。
8進数の出力には、%oを使い、16進数の出力には、%xまたは%Xを使う。
%xでは、小文字a~fで、%Xでは、大文字A~Fで表示される。
整数定数
整数定数では3種類の基数で表せる。
10進定数
10進数で表された整数定数が10進定数である。
8進定数
10進定数と区別できるように先頭に0をおいて表記する。
例えば、012は8進定数である。(10進数での10である。)
16進定数
先頭に0xまたは0Xをつけて表記する。10進数の10~15に相当するA~Fは大文字でも小文字でもよい。
(参考)新・解きながら学ぶC言語 第2版 柴田望洋 (監修・著)、 由梨かおる(著)SBクリエイティブ
コメント