進数とは
情報学では、進数がよく出てきます。
進数は、数を表す方法であり、普段私達が使用しているのは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
0件のコメント