【コンピュータと2進数】




ふつう、私達が計算をするときには、0から9までの数字を使います。
どんなたくさんの数でも0から9までの数字の組み合わせで表せるからです。




ところが、コンピュータでは、このような10進法だと仕組みが複雑になります。
そこで、今のコンピュータは、0と1だけで数を表す2進法を使います。




たとえば、2つのランプを使って、質問への答えがハイであるときは、2つのランプを点灯する。
イイエのときは全部消す。答えられないときは、1つ点灯する。




このように、答えを表わし、点灯しているものを1、消えているランプを0とすると、0と1の組み合わせだけで4種類の答えが表わせます。
これが2進法です。







(1) 2進数と16進数

① 2進数

Oと1の2つの数字だけを用い、1の次は「10」となる数え方。
コンピューターの世界では、2進数によって演算が行われます。
電子回路のON/0FFや電圧の高低など、2つの状態を表すのに適しているためです。

1から順番にかぞえていくと、
02進数   0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 100001
10進数   0 1  2  3  4   5   6   7    8    9   10   11   12   13   14   15    16     となります。

2進数の「1110」は、10進数では 1×2^3 + 1×2^2 + 1×2^1 + 0 = 1×8 + 1×4 + 1×2 + 0×1= 14です。
また、2進数の1桁は「ビット」と呼ばれ、コンピューターで扱う数量の基本単位となります。


② 16進数

16で1桁繰り上がる数え方。
0~9までの10個の数字と、A~Fまでの6個の文字を用います。
文字コードなど、コンピューターで扱うデータの多くが16進数で表されます。
また、2進数の4桁分をまとめて16進数で表すこともあります。

1から順番にかぞえていくと、
16進数 0 1 2 3 4 5 6 7 8 9  A  B  C  D   E  F  10
10進数 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
となります。
16進数の「A1」は、10進数では 10×16 + 1で161です。
また、16進数の「1AD」は、10進数では、、
1AD = 1×16^2 + A×16^1 + D
= 1×256 + 10×16 + 13
= 429
になります。
16進数の使用例としては、インターネットの HTML ファイルがあります。
背景や文字の表示色を6桁の 16進数で指定しています。


③ 10進数から2進数への変換

変換対象の10進数を2で割り、その商をさらに2で割っていきます。
これを商が2で割れなくなるまで繰り返し、最後の商を先頭にして、余りを並べていきます。
たとえば、100を2進数で表現するには、
100÷2=50 余り 0
50÷2=25 余り 0
25÷2=12 余り 1
12÷2=6 余り 0
6÷2=3 余り 0
3÷2=1 余り 1
と最後の商が1で、もうこれ以上2で割ることはできません。
そこで、この商を先頭にして、各あまりを並べていきます。
すると100は2進数では、次のようになります。
100=1100100


④ 10進数から16進数の変換

変換対象の10進数を16で割り、その商をさらに16で割っていきます。
これを商が16で割れなくなるまで繰り返し、最後の商を先頭にして、余りを並べていきます。
たとえば、100を16進数で表現するには、
100÷16=6 余り 4
これ以上商を16で割ることができません。
この商を先頭にしてあまりを並べると
100=64
となります。
また、300を16進数で表現するには、、
300÷16=18 余り 12
18÷16=1 余り 2
商をこれ以上16で割ることができません。
この商を先頭にしてあまりを並べていくと
300=12C (C=12)
となります。
また、1963を16進数で表現するには、、
1963÷16=122 余り 11
122 ÷16=112 余り 10
112 ÷16=7 余り 0
商をこれ以上16で割ることができません。
この商を先頭にしてあまりを並べていくと
1963=7AB(A=10、B=11)
となります。


⑤ 2進数から16進数の変換

16進数は2進数の4桁をひとつにまとめたものと考えることができるので、2進数から16進数の変換は4桁ごとに変換します。
111100010 であれば
0001 1110 0010
最初の「0」3つは、4桁にそろえるため
というように4桁ごとに区切ります。この4桁ごと16進数に直していくと、
0001=1
1110=E
(1×2^3 + 1×2^2 + 1×2^1 + 0 = 1×8 + 1×4 + 1×2 + 0×1= 14)
0010=2
(0×2^3 + 0×2^2 + 1×2^1 + 0 = 0×8 + 0×4 + 1×2 + 0×1= 2)
となるので、
000111100010=1E2
となります。

⑥ 16進数から2進数の変換
E2A、
E=1110
2=0010
A=1010
となるので、
E2A=111000101010
と変換できます。




(2) ビットとバイト

「0」と「1」を基本とした2進数の1桁をビット(bit)と呼びます。
コンピュータのメモリであれば、コンデンサ(蓄電器)に電荷が蓄積されている場合が「1」(1ビット)、
蓄積されていない場合が「0」(1ビット)となります。

コンピュータが1単位として扱うビットのまとまりのことをバイト(byte)と言います。
1バイトのビット数は、IBM社の規定に沿った1バイト=8ビットが普及しています。

1ビットでは2通りの情報を表せますが、1バイトでは、2の8乗=256通りの情報を表せます。
色に例えれば、1ビットでは白と黒の2色、2ビットでは4色、3ビットでは16色、8ビットでは256色の色を表現できるということです。

コンピュータでは、一般にファイル容量を表す単位として使用されています。
テキストファイルであれ、ワード文書であれ、 エクセルの文書であれ、GIF画像であれ、この「バイト」をもとにして構成されています。

1バイトは、元々はメモリ-CPU間の転送単位を意味していました。
たとえば、1B/s(bytes per second バイト毎秒)= 8bps (bits per second ビット毎秒)となります。

しかし、技術の進歩で転送単位が 8 → 16 → 32 → 64ビットと大きくなり、現在では転送単位とバイトは切り離して見る必要があります。

たとえば、32ビットのCPUは、2の32乗=約43憶のデータ処理を一度に行えます。
処理速度でいえば、4GB/s (gigabytes per second ギガバイト毎秒)= 約43億B/s(バイト毎秒)となります。










Home Page