データ表現
コンピュータでは、データをどのように扱っているのでしょうか?
コンピュータは、すべてのデータを数値として扱っています。なぜかと言うと、それが一番単純だからです。
コンピュータが扱う数値は0と1です。これは、スイッチのON/OFFと同じですね。この0と1を、膨大な量を組み合わせることにより、たくさんの数値を表現します。0か1どちらかをあらわす単位をbit(ビット)と言います。
この0と1は、2進数で表現します。2進数とは、2になったときに桁が上がる数の数え方です。一般的に、n進数はnになったときに桁が上がります。われわれが普段使用している10進数は、10になったときに桁が上がりますよね。
2進数で2をあらわす場合、「10」となります。これは「じゅう」ではありません。「いちぜろ」と読みます。3は「11」、4は「100」です。
ただ、2進数で数をあらわす場合、数が大きくなると桁数が膨大な量になります。また、2進数だと直感的に数値が分かりにくいです。そこでよく使うのが、16進数です。前述の通り、16になったときに桁が上がります。「じゃあ、10〜15はどうやって書くの?」と思うでしょうが、10〜15はアルファベットのA〜Fを使います。10はA、15はFです。
実は、2進数と16進数は相性がいいのです。16進数の1桁は、2進数の4桁に相当するからです。16進数でFFと書いた場合、10進数だと255になります。これを2進数であらわすと「1111 1111」となります。
16進数で「10」と書くと10進数で言う16になりますが、ちょっと分かりにくいですよね。そこで、「これは16進数ですよ」という意味で「10H」と書きます。hexa decimalのHです。ついでに、2進数は「10B」と書いたりします。binary digitのBです。
さて、コンピュータではよく「バイト」という言葉を耳にするかと思います。これはコンピュータで扱う情報の単位です。byteと書きます。1byteというのは、8bitのことです。ON/OFFのスイッチが8個並んでいるイメージです。8bitなんて中途半端な感じがするかもしれませんが、先ほど「16進数の1桁は、2進数の4桁に相当する」と書いたとおり、1byteは16進数2桁で表現できるので中途半端ではありません。ちなみに、2バイト以上は複数形で「2bytes」とsをつけたりなどはしません。
1byteという単位は、いったいいくつの数値を表すことができるでしょうか?1byte=8bitなので、2の8乗になります。2×2×2×2×2×2×2×2=256です。ただし、0から始まるので0〜255の256段階となります。2byteの場合、2の16乗なので、2×2×2×2×2×2×2×2×2×2×2×2×2×2×2×2=65,536で0〜65535の数値が扱えます。256×256と一緒ですね。
当然、これっぽっちではまともにデータが扱えないので、もっと大きな単位が必要になります。1グラムの上は1キログラムというような感じで、1バイトの上は1キロバイトというふうに、キロ(KB)、メガ(MB)、ギガ(GB)、テラ(TB)…とあらわします。
ここでちょっと注意が必要なのですが、1KB=1000byteではありません。1KB=1024byteなのです。なぜかと言うと、コンピュータは2進数が基本なので、2のn乗であらわせる数が「きりがいい」数字になるからです。ちなみに1024は16進数で「400H」となり、2進数だと「0100 0000 0000B」です。これを1000にしてしまうと、16進数で「3E8H」、2進数で「0011 1110 1000B」という中途半端な数値になってしまうのです。
最近すっかり市民権を獲得したDVDレコーダですが、DVDディスクのパッケージを見ると「容量4.7GB」と書いてあることがあります。しかし、パソコンで使ってみると4.3GBくらいしか入りません。なぜだか分かりませんが、これは1GB=1,000,000,000byteで計算しているようです。
〜bit CPUという言葉を耳にすることがあるかと思います。最近(2005/06時点)だと、64bit CPUが話題ですね。これは、CPUが一度に扱うことができるビット数を意味します。64bit CPUは64bit=8byte=18,446,744,073,709,551,616までの数を一度に計算することができるということになります。