0/1 の値をとる素子一つを 1ビット (bit - binary digit) という. その素子を8個ならべると, 1バイト(= 8ビット)の記憶素子となるが, それが覚えておける値の種類はどれだけあるかというと
2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 = 256 通りである. 一般に n ビットのメモリがあれば, 2のn乗とおりの値が記憶できる.
問題はこの 256通りのパターンに, 数値をどのように対応させるかである. たとえばこんな方法がある:
00000000 -> 0 00000001 -> 1 00000010 -> 2 00000011 -> 3 00000100 -> 4 ...これが数値の二進法による表現である. どんどん続けると
... 11111101 -> 253 11111110 -> 254 11111111 -> 255というぐあいに, 255まで表現できる. もちろんこの 255 という数値は
(2 の 8 乗) - 1である.
ところで, この方法では負の数が表現できない. そのために, 以下のような対応を使う:
00000000 -> 0 00000001 -> 1 00000010 -> 2 00000011 -> 3 00000100 -> 4 ... 01111110 -> 126 01111111 -> 127 (ここまではさっきと同じ) 10000000 -> -128 (ここで突然マイナスになる!) 10000001 -> -127 ... 11111101 -> -3 11111110 -> -2 11111111 -> -1これを, 「2の補数表現」と呼んでいる. 普通に計算機の上で使っているのはこの表現である.
2の補数表現についての質問 - 考えてみよう.
こうして -128 から 127 までの整数はあらわせたとして, それより
大きい数をあらわすにはどうするか.
8 ビットよりももっとたくさんのビットを使えばよいわけだ.
たとえば, 16 ビット使うことにすると,
-32768 から 32767 までがあらわせるし, 32 ビットつかうことにすれば
-2147483648 から 2147483647 まであらわせる. (それでも, たったの 20億ちょっとだ. 国家予算とかは もっとビット数が必要なのだなあ)
さらに, こうして整数は表現できたとして, では小数はどうするのだろう? (また後日)