コンピュータの演算には0と1からなる2進数が使われています。これによりシンプルな回路構成ながらきわめて信頼性の高い装置を実現する事が出来ます。我々の生活やC言語など人間が触れるプログラミング言語では主に10進数が用いられており、このため人間がコンピュータを扱うさいには2進数と10進数の変換が必要となります。本章ではその手法について学んでいきます。
2進数と10進数
- 10進数
まず、10進数から考えてみましょう。これは私たちが日常的に使っている数字の表現方法です。0から9までの数字を使って、それ以上の数字を表現するときには桁を上げます。たとえば、9の次は10です。
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...
このシステムでは、0から9までの10種類の数字を使用します。各桁の位置は10の累乗で表されます。例えば、数字「235」は、
として理解されます。
- 2進数
2進数は名前の通り、「2つ」の数字、0と1だけを使って数を表現します。これは主にコンピュータ内部での情報の扱いに用いられます。
2進数で数を数えると、こんな感じになります
0, 1, 10, 11, 100, 101, ...
各桁の位置は2の累乗で表されます。例えば、2進数の「101」は、
として、表され、10進数の「5」と等しい値を持ちます。
2進数と10進数の表現を明確に表す為,
と書くことがあります。
bitと基数
- bit(ビット):
- ビットは、binary digit(バイナリーディジット)の略です。
- 2つの状態(通常は0または1)のいずれかを示す最小のデータ単位です。
- コンピュータのメモリやデータは、基本的にビットの組み合わせとして表されます。たとえば、8ビットは1バイトを構成します。
- ビットはコンピュータの基本的な操作(例: AND, OR, NOTなどの論理演算)で使用されるため、コンピュータの中心的な存在です。
- 基数(または進数):
- 基数は、数を表現するときの「基本」となる数のことです。
- たとえば、我々が普段使っている10進法は基数10を持つシステムです。これは、0から9までの10個の数字を使用することを意味します。
- コンピュータは2進法を用いてデータを処理します。これは基数2のシステムで、0と1の2つの数字だけを使用します。
- 他にも、8進法(基数8)、16進法(基数16、数字0-9とA-Fを使用)などのシステムが存在します。
ここで、5bitの2進数で表すことが出来る最大値を考えます。
最大の5bitの2進数の表現は11111です。
これを10進数に変換すると
となり5bitの2進数で表すことが出来る最大値は31となります。よって0から31の32種類の数字を表すことが出来るわけです。
実はコンピュータの記憶デバイスにはこの2進数の性質が現れます。
記憶容量の単位はバイト(byte)という単位が使われます。
1バイト(byte)は8ビット(bit)です。
そして、これがさらに大きな単位で増えていきます:キロバイト(KB)、メガバイト(MB)、ギガバイト(GB)、テラバイト(TB)、ペタバイト(PB) など。通常、これらの単位は2のべき乗で増加します(例えば、1KBは通常1024バイト、1MBは1024KBとされます)。