基数

この記事での学習内容 ITパスポート 基本情報 応用情報

2 進数,8 進数,10 進数,16 進数,n 進数の表現,2 進数と 10 進数などの基数の変換手法 を理解する。

記数法

私たちが一般的に数値を扱うときには0~9までの数字を使う、「10進法」を用いています。
一方で通信やコンピュータの分野では「2進法」「8進法」「16進法」などが使われます。

10進法では0~9までの数字を使い、「10」を桁上りの基準としていますが、2進数では「2」、16進数では「16」が桁上りの基準としています。

この桁上りの基準をどの値にするか、0からどの数字(文字)までを使って数を表すかを決めたものを「記数法」といいます。

一般的には、桁上りの基準の値を用いて「n進法:nを基準に桁上りする」となっています。

 桁上りの基準使う数字・文字表記方法の例
(10進数の100の場合)
2進法20と1のみ0b1100100
1100100(2)
8進法80~7の数字0144
144(8)
10進法100~9の数字100
16進法160~9までの数字と英字のA, B, C, D, E, F0x64
64(16)

基数と重みーn進数の表現

10進数の「1000」という値は「1 × 103」と表すことも出来ます。

この時の1を「仮数」、10を「基数」、103「重み」といい、10進数の各桁はこの表現による値となっています。
言い換えれば、「基数」は桁上りの基準で、「仮数」は実際に表示されている数字、「重み」はどの桁かを表す値となります。
(但し、重みの桁数は0が1の位となる点に注意)

このように、nを基数として数値を表す記数法を「n進数」といいます。

なお、n進数で小数を表すときには、「n-1」「n-2といった重みを使います。

前提として、以下の法則を覚えておくこと。
・n0 = 1 (nの「0乗」は必ず1になる。)
・n-x = 1 / nx

これらを踏まえて、「1234.567」という10進数の数値を基数と重みを使った表現で表すと下の式および図のようになります。

1234.567 = 1000 + 200 + 30 + 4 + 0.5 + 0.06 + 0.007
   = 1 × 103 + 2 × 102 + 3 × 101 + 4 × 100 + 5 × 10-1 + 6 × 10-2  + 7 × 10-3 

基数と重みー2進数の場合

2進数は2を基数とする数え方です。2を基準に桁上りするので、数の表記には0と1のみを使います。

例えば2進数の「1010」という値を重みを使った表現で表すと以下のようになります。

1010 = 1 × 23 + 0 × 22 + 1 × 21 + 0 × 20 

2進数の加算と減算

2進数同士の加算、減算は10進数の時と同様、筆算で解くことが出来ます。

例1) 11100(2) + 10110(2)

例2) 11100(2) - 10110(2)

基数変換

また、10進数と2進数など、n進数同士は互いに変換することが出来ますが、この変換のことを「基数変換」といいます。

10進数と2進数の変換

2進数を10進数に変換

2進数を10進数に変換するには、各桁の数に重み(2のべき乗)を掛けて合計します。

10進数を2進数に変換(整数部分)

10進数の整数を2進数に変換するには、10進数を商が0になるまで2で割り続け、余りを拾い出して順に並べると2進数になる。
*拾い出して並べる順は図を参照。

10進数を2進数に変換(小数部分)

10進数の小数を2進数に変換するには、10進数を2倍し、1の位を取り出す、という作業を小数部分がなくなるまで繰り返す。
*拾い出して並べる順は図を参照。

8進数と16進数

コンピュータ内部では情報は2進数で扱われているので、そのまま表記したいところですが、少し大きな値になると桁数が非常に多くなってしまい、ただでさえ分かりにくい2進数がさらに分かりにくくなります。

そこで桁数を少なくするためのテクニックとして、8進数や16進数を用います。
8進数の1桁は、2進数の3桁に対応し、16進数の1桁は2進数の4桁に対応するため、2進数から8進数・16進数には簡単に置き換えることが出来るためです。

2進数と8進数・16進数を変換するには、以下の表で対応を覚えてしまいましょう。

10進数2進数8進数16進数
0000
1111
21022
31133
410044
510155
611066
711177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F
16100002010
2進数と8進数の変換

2進数の3桁は、8進数の1桁に対応しています。
これを利用し、小数点を基準に3桁ずつ区切り、それぞれを8進数に変換していくと8進数の値となります。
*3桁に足りない部分は0を補います。整数部の場合は左に、小数部の場合は右に補います。

2進数と16進数の変換

2進数の4桁は、16進数の1桁に対応しています。
これを利用し、小数点を基準に4桁ずつ区切り、それぞれを16進数に変換していくと16進数の値となります。
*4桁に足りない部分は0を補います。整数部の場合は左に、小数部の場合は右に補います。

情報を表す単位

コンピュータ内部では、電流のON/OFFによって情報を表現しています。
この電流のON/OFFを数字に置き換えた場合、0と1の2つの数字のみを使う2進数のほうが都合が良いため、コンピュータ内部でデータを処理する場合には2進数が用いられています。

ビット

コンピュータはデータ処理に2進数を用いますが、この2進数1桁分の情報(ON/OFF、0 or 1)がコンピュータで扱うデータの最小単位で、「ビット(bit)」といいます。

1ビットの情報量で表せるデータの範囲は、2進数1桁分ですので、0か1の2パターンです。

ビットで表すことの出来る範囲

1ビット(=2進数1桁)で表すことの出来る情報は0か1の2通りです。
これを2桁分使うと、「00」「01」「10」「11」の4通りが表せます。

2=21、4=22ですので、nビット(2進数n桁)では、2n通りの情報を表すことが出来ます。

バイト

データの最小単位はビットですが、記憶装置の保存容量などを表す単位として「バイト(byte)」という単位もよく使われます。

「1バイト = 8ビット」として換算しますので、1バイトで表すことの出来る範囲は28で256通りとなります。