ゾンビでもわかるC言語プログラミング

C言語入門者の応援をします

数を表す進数の基本

Index

進数とは

情報学では、進数がよく出てきます。
進数は、数を表す方法であり、普段私達が使用しているのは10進数になります。

進数には、主に次の種類があります。

  • 2進数
  • 8進数
  • 10進数
  • 16進数

ご存知の通り10進数は、数を 0 から 9 の十種類の文字で表現しています。
十種類の文字で数を表現することから10進数と呼ばれます。

2進数は、2種類の文字で数を表します。
その文字は、0 と 1 です。

8進数は、0 ~ 7 の8種類の文字で数を表します。

16進数は、 0 ~ 9 と ABCDEF の16種類の文字で数を表します。

10進数に繰り上がり
(9まで行ったら次は 1 と 0 という2つの文字を使用して 10 を表現する )
があるのと同じように、他の進数も繰り上がりによって無限に数を表します。

進数は、なにも難しいことはありません。
0から順番に1を足していき、使える文字の最後まで到達したら、繰り上がればよいだけです。

2進数

2進数は、0 と 1 の2種類の文字を使用して、以下のように数を表します。

0
1
10
11
100
101
110
111
1000
...

一見難しそうですが、やっていることは簡単です。

0 に 1 を足し、1 になる
1 に 1 を足し、使用できる文字がないので、繰り上がって 10 になる
10 に 1 を足し、11 になる
11 に 1 を足し、使用できる文字がないので、繰り上がって 100 になる

これを繰り返すだけです。

C言語で2進数を扱う

C言語で2進数を記述するときは、値の先頭に 0b を記述します。

例)

int i = 0b10010;
printf("%d\n", i);

出力

18

8進数

8進数は、0 ~ 7 の文字を使用して、以下のように数を表します。

0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
21
22
...

8進数も 7 まで行ったら繰り上がる、それだけです。

C言語で8進数を扱う

C言語で8進数を記述するときは、値の先頭に 0 を記述します。

例)

int i = 0374;
printf("%d\n", i);

出力

252

また、printf関数を使用して、10進数の値を8進数の値として出力するには、printf関数のフォーマット指定子に %o を使用します。

int i = 252;
printf("%o\n", i);

出力

374

16進数

16進数は、0 ~ 9 と ABCDEF の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
...

コンピュータでよく16進数が使われるのは、 0xFFビット が 1 バイトであり、きりが良いからだと思われます。

C言語で16進数を扱う

C言語で16進数を記述するときは、値の先頭に 0x を記述します。

例)

int i = 0x6F;
printf("%d\n", i);

出力

111

また、printf関数を使用して、10進数の値を16進数の値として出力するには、printf関数のフォーマット指定子に %x を使用します。

int i = 111;
printf("%x\n", i);

出力

6f

書籍

新・明解C言語 入門編 (明解シリーズ)

新・明解C言語 入門編 (明解シリーズ)

苦しんで覚えるC言語

苦しんで覚えるC言語

やさしいC 第5版 (「やさしい」シリーズ)

やさしいC 第5版 (「やさしい」シリーズ)

C実践プログラミング 第3版

C実践プログラミング 第3版