C言語での8進数、16進数の数値の表し方を学んでみよう🌞🌞🌞
マックス「C言語では8進数、16進数というものも使えるそうじゃないか
ただ8進数、16進数が何を意味しているのかわからんな・・・」
ソーラー「それでは10進数と8進数の対応表を見てください
10進数🐈🐈🐈8進数
0👉👉👉👉👉0
1👉👉👉👉👉1
2👉👉👉👉👉2
3👉👉👉👉👉3
4👉👉👉👉👉4
5👉👉👉👉👉5
6👉👉👉👉👉6
7👉👉👉👉👉7
8👉👉👉👉👉10
9👉👉👉👉👉11
10👉👉👉👉👉12
11👉👉👉👉👉13
12👉👉👉👉👉14
13👉👉👉👉👉15
14👉👉👉👉👉16
15👉👉👉👉👉17
16👉👉👉👉👉20
17👉👉👉👉👉21
18👉👉👉👉👉22
ソーラー「このように8進数は
0から7までの8つの数字をつかって数値をあらわす仕組みとなっています。
8進数7の次は
8進数では8ではなく
8進数10
となっているのがわかります
8進数17の次は
8進数では18ではなく
8進数20
となっていますね。」
マックス「8進数17の次は
8進数では18ではなく
8進数20なのか・・・
みかけない数値の表現方法だな・・・」
ソーラー「次は10進数と16進数の対応表を見てください
10進数🐈🐈🐈16進数
0👉👉👉👉👉0
1👉👉👉👉👉1
2👉👉👉👉👉2
3👉👉👉👉👉3
4👉👉👉👉👉4
5👉👉👉👉👉5
6👉👉👉👉👉6
7👉👉👉👉👉7
8👉👉👉👉👉8
9👉👉👉👉👉9
10👉👉👉👉👉A
11👉👉👉👉👉B
12👉👉👉👉👉C
13👉👉👉👉👉D
14👉👉👉👉👉E
15👉👉👉👉👉F
16👉👉👉👉👉10
17👉👉👉👉👉11
18👉👉👉👉👉12
19👉👉👉👉👉13
20👉👉👉👉👉14
21👉👉👉👉👉15
22👉👉👉👉👉16
23👉👉👉👉👉17
24👉👉👉👉👉18
25👉👉👉👉👉19
26👉👉👉👉👉1A
27👉👉👉👉👉1B
28👉👉👉👉👉1C
29👉👉👉👉👉1D
30👉👉👉👉👉1E
31👉👉👉👉👉1F
32👉👉👉👉👉20
33👉👉👉👉👉21
マックス「なんか数値にアルファベットが混ざっていないか?
なんでぇ?」
ソーラー「それは😊ですね。
16進数は
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
の
16個の数字(文字)を用いて数値を表現するというルールがあるからなんです
10進数では
0
1
2
3
4
5
6
7
8
9
の10個の数字を用いて数値を表現していますね。
そして
数値をあらわすのに
0
1
2
3
4
5
6
7
8
9
までの数字しか使えないので
数値を
0
1
2
3
4
5
6
7
8
9
で表した後は
数値を
1と0を組み合わせた
10で表すことになっています
同様に
16進数では
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
の16個の数字(文字)を用いて数値を表現しています。
そして
数値をあらわすのに
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
までの数字(文字)しか使えないので
数値を
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
で表した後は
数値を
1と0を組み合わせた
10で表すことになっています」
マックス「10進数16は16進数では10ってことか
なるほどね~」
ソーラー「さてさて、C言語ではプログラム内で
8進数
16進数
を用いることもできます
その際
8進数
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
20
は
00
01
02
03
04
05
06
07
010
011
012
013
014
015
016
と左端に0をつけてあらわされます。
16進数
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
20は
C言語では
左端に0xをつけた
0x0
0x1
0x2
0x3
0x4
0x5
0x6
0x7
0x8
0x9
0xA
0xB
0xC
0xD
0xE
0xF
0x10
0x11
0x12
0x13
0x14
0x15
0x16
0x17
0x18
0x19
0x1A
0x1B
0x1C
0x1D
0x1E
0x1F
0x20
であらわされます」
マックス「16進数は
左端に0xをつけるのか
コンピュータぽくってかっこいいじゃないか」
ソーラー「そうですね。
それでは
8進数
16進数
を用いた
プログラムを構成してみましょう」
#include<stdio.h>
int main(void)
{
printf("%d\n", 00);
printf("%d\n", 01);
printf("%d\n", 05);
printf("%d\n", 010);
printf("%d\n", 0x0);
printf("%d\n", 0x1);
printf("%d\n", 0xA);
printf("%d\n", 0x10);
printf("%d\n", 0x20);
return 0;
}
ソーラー「プログラムの準備ができました
みなさん
このプログラムでは
数値データを10進数データに変換する%d出力変換指定子が
使われていることにご注目下さい。
ですので
8進数
00
01
05
010
16進数
0x0
0x1
0xA
0x10
0x20
は
10進数に変換されて
コマンドプロンプト画面に表示されることになります」
マックス「おお そんな仕組みになっているのか」
ソーラー「それでは どんな結果が出てくるか
楽しみですね
コンパイル!」
(EAZY IDECの場合)
プログラムの実行結果
0
1
5
8
0
1
10
16
32
(Visual studioの場合)
プログラムの実行結果
0
1
5
8
0
1
10
16
32
ソーラー「でてきました
ちゃんと
8進数
16進数を
10進数に変換して
コマンドプロンプト画面にprintf出力表示することができました」
マックス「
C言語では
8進数
16進数も
プログラムでつかえるのか
設定がこってるな おされさん」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます