1.1.1.1.進数・基数
1.1.1.1.進数・基数
普段、馴染みのある数字(2017年や、980円など)は10進数と呼ばれます。 コンピュータ内部では、情報は全て0と1の組み合わせのみで表現されており、この表現の仕方を2進数と呼びます。 情報処理技術者試験で出題される進数には、2進数、8進数、10進数、16進数があります。
今回は、各進数の変換方法(基数変換)や、計算のコツを説明します。
重要用語
- 基数変換の方法
- 2進数、8進数、10進数、16進数
スポンサードリンク
目次
基数とは
基数(きすう):【英】radix, base
基数とは、数値を表現する際に、位取りの基準となる数のことである。 普段の生活に用いられる10進数は、10倍ごとに桁が上がっていくので、基数は10となる。2進数ならば基数は2であり、2倍ごとに桁が上がってゆく。16進数でも同様に、16倍ごとに桁を増やし、「1の位、16の位、256の位、~」と増えてゆく。
出典:weblio辞書(http://www.weblio.jp/)
ページ頭の例で挙げた2進数、8進数、10進数、16進数の2,8,10,16が基数にあたります。
基数が10の例で考えると、桁数は1(1桁)->10(2桁)->100(3桁)->1000(4桁)と、値が10(=基数)倍となるごとに桁が1上がります。
2進数
2進数はコンピュータ内部で使われている進数で、0と1のみで表現されます。
電気のON,OFF、磁極のN,S、電圧の高,低などの2値でデータを表現することができます。
10進数 | 2進数 |
---|---|
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
9 | 1001 |
10 | 1010 |
11 | 1011 |
… | … |
2017 | 11111100001 |
16進数
16進数もコンピュータの世界ではよく出現します。先に述べた通り、
コンピュータ内部ではデータを2進数で管理しますが、10進数との対比を見てもわかるように、
非常に桁数が大きくなってしまいます。これをうまく表現するために作られたのが16進数です。
16進数では、0〜9の数字とA,B,C,D,E,Fのアルファベット合わせて16文字を使って表現します。
10進数 | 2進数 | 16進数 |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
2 | 10 | 2 |
3 | 11 | 3 |
4 | 100 | 4 |
5 | 101 | 5 |
6 | 110 | 6 |
7 | 111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
10 | 1010 | A |
11 | 1011 | B |
12 | 1100 | C |
13 | 1101 | D |
14 | 1110 | E |
15 | 1111 | F |
16 | 10000 | 10 |
17 | 10001 | 11 |
… | … | … |
2017 | 11111100001 | 7E1 |
この例のように、10進数で2017は、2進数では11111100001(11桁)、16進数では7E1(3桁)で表現できます。
使用例としては、インターネットなどのネットワーク上のIPアドレス(IPv6アドレス)を表すために使われています。
IPv6アドレスの例(16進数4桁ごとに区切って表記)
2001:0db8:1234:5678:90ab:cdef:0000:0000
8進数
10進数 | 2進数 | 8進数 | 16進数 |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 3 | 3 |
4 | 100 | 4 | 4 |
5 | 101 | 5 | 5 |
6 | 110 | 6 | 6 |
7 | 111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
16 | 10000 | 20 | 10 |
17 | 10001 | 21 | 11 |
… | … | … | … |
2017 | 11111100001 | 3741 | 7E1 |
8進数も16進数と同じように2進数を小さい桁数で表現するために使われますが、使用頻度は低いです。 0〜7の文字を使って表現します。
基数変換の方法
10進整数→2進数 [方法1]
2進数に変換するには、2のべき乗(2の何乗か)をどのように足し合わせると、その数字を実現できるかで考えます。
2のべき乗
乗数 | 数値(10進数) |
---|---|
0 | 1 |
1 | 2 |
2 | 4 |
3 | 8 |
4 | 16 |
5 | 32 |
6 | 64 |
7 | 128 |
8 | 256 |
9 | 512 |
10 | 1024 |
10進整数→2進数 [方法2]
以下のように基数である2で数値を割っていき、その余りを記録します。
商を順次割っていき、0になるまで繰り返します。
余りを、図のように、最後に計算した余りが最上位の桁となるように並べれば2進数が得られます。
10進小数→2進数 [方法1]
整数の所で、2進数のn桁目は2のn-1乗の位でした。これと同じように、小数で2進数の小数点以下n桁目は2の-n乗の位です。
これを利用して、2のマイナスべき乗をどのように足し合わせると、その数字を実現できるかで考えます。
※全ての10進小数を2進数で表すことはできません。例えば10進数で0.1は、2進数では表せず、限りなく桁が続く循環小数になります。
2のべき乗(マイナス)
乗数 | 数値(10進数) |
---|---|
0 | 1 |
-1 | 0.5 |
-2 | 0.25 |
-3 | 0.125 |
-4 | 0.0625 |
-5 | 0.03125 |
-6 | 0.015625 |
-7 | 0.0078125 |
-8 | 0.00390625 |
-9 | 0.001953125 |
-10 | 0.0009765625 |
10進小数→2進数 [方法2]
整数の方法2と同じように、機械的に算出する方法もあります。整数の場合と逆で、小数部分に2を掛けていき、その積の整数部分(0か1か)を記録していきます。
そして、小数部分が0になるまで繰り返します。
結果の整数部分を図のように、最初に計算した値が小数点第1位となるように並べれば2進数が得られます。
2進数→10進数
これまでに説明した下の2つの特徴を利用します。 2進数のn桁目は2のn-1乗の位。 小数で2進数の小数点以下n桁目は2の-n乗の位。
2進数←→16進数
2進数と16進数の相互変換は、
16進数の1桁 = 2進数の4桁 であることを利用して変換します。
2進数←→16進数 対応表
2進数 | 16進数 |
---|---|
0 | 0 |
1 | 1 |
10 | 2 |
11 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
1000 | 8 |
1001 | 9 |
1010 | A |
1011 | B |
1100 | C |
1101 | D |
1110 | E |
1111 | F |
16進数←→10進数
これまでに説明した内容を組み合わせる方法が間違いにくくてオススメです。
16進数→10進数 = 16進数 → 2進数 → 10進数
10進数→16進数 = 10進数 → 2進数 → 16進数
例題:基本情報技術者(FE) H27春 午前 問1
基本情報技術者(FE) H27春 問1
問1
10進数の演算式7÷32の結果を2進数で表したものはどれか。
ア. 0.001011
イ. 0.001101
ウ. 0.00111
エ. 0.0111
上で説明した方法1、方法2のそれぞれでの解法を説明します。