ソフトウェア:データ編 その1 コンピューターは数しかわからない | |||||||||||||||||||||||||||||||||
さて、前にも書いたとおり、コンピューターはソフトウェアがなければ粗大ゴミです。 それではソフトウェアとは一体どういう素性の物なのでしょう? 一言でいってしまえば下のようになります。 ソフトウェア=データ(計算される値)+プログラム(計算の手順)基本中の基本はまず最初に知っておかなければならないことは、コンピューターとは所詮のところ「計算機」なのです。従って以下の大原則があります。
まずこれはしっかり覚えておいてください。 二進法ってなんだったっけ?さて、前項の1)はまあいいとして二進法って何でしたっけ?たぶん昔に習った記憶があるのではないでしょうか? 普段私たちが一般に使っている数は10進法です。 例えば123という数があります。これはすなわちある数を以下のように現すことです。
(12進法では数字が12個いります。そこでA=10、B=11とします)
(16進法では数字が16個いります。そこでA=10、B=11・・・F=15とします)
何で二進法などを使うのか?どうして二進法などという物を使うのでしょう? その理由は数字が2個しかなくていいので便利だということです。 世の中もっとも簡単なのは「あるかないか」です。例えば現在のメモリーならば ある場所に電気が溜まっていたら1という数字が書かれている。溜まってなければ0という数字が書かれている、という規則で作られています。 もちろん現在の技術を使えば、ある場所にこれだけ溜まっていれば1、もっと溜まっていれば2とかいうようなハードウェアも作れますが、普通はそうしません。その理由は「面倒だから」もしくは「今のでうまく行っているのに何でそんなややこしい物を作らんといかん?」です。 というわけでとにかくコンピューターは二進法の数しかわからないのです。 実際に扱える数の制限ならば数ならどんなものでもわかるかというとそうではありません。コンピューターがそのままわかる数とは
ところで変な数だと思うでしょう。でもコンピューターの世界ではこれがキリのいい数なのです。
CPUでよく16ビットとか32ビットのCPUだと言われますが、これはいい加減に言えばそのCPUが扱える数の二進法で表記した場合の桁数です。 ビットとバイトところでコンピューターの世界ではよく「ビット」とか「バイト」という言葉が使われます。前の章でも説明なしに勝手に使っていますね。ではビットとは一体なんでしょう?一言で言えば、 ビットとは情報量の最小単位である。 ですが・・・いきなりこれでわかった人ははっきり言って偉いです。 ビットという概念は情報理論の中で生まれました。情報理論とはもともと「通信」をいかに効率的に行うかということを数学的に解析した理論です。 通信とは例えば伝言とか手紙とか電話とかモールス信号とかで他の人に「情報」を伝える手段です。通信をいかに効率的に行うかというのは重要な問題です。その際に問題になってくるのが「情報とは何か」ということです。扱う物の本質が分かっていなければ、扱いようがないのは当然ですね しかし「情報」とはよく使う言葉ですが、大変漠然とした概念です。辞書を見ると「判断や行動に役立つ知識」とか書かれていますが、結局なんだかよくわかりません。 情報の理論を作るに当たってまず問題になるのが「情報」という物をどうとらえるかでした。 科学的に物を考えようとしたならば、普通は以下のような方法で複雑な対象を表現します。
これを情報に当てはめてみると、
となります。 それではそれ以上分割できない情報とはどんな物でしょう?それはすなわち「はい/いいえ」です。これをさらに分割しようとすると、「はい」だけとか「いいえ」だけになりますが、この言葉は二つセットであるからこそ相手に「情報」を伝えられます。 というわけで、情報理論では「はい」または「いいえ」で表される情報を1ビットと定義して、情報量の最小単位としました。 と、ここで以下のような疑問はわきませんか? ちょっと待ってくれ!「はい」「いいえ」というのが意味を持つのは、元の質問があるからだ。これだけ独立していても意味がないじゃないか! まさにその通りです。しかし実は情報理論では情報の持つ意味という物を取り扱いません。すなわち「やあ。ゲイツ大統領。明日核ミサイルのボタンを押すかね?」「はい」と、「黄色の望遠鏡は芥子明太子が愛しているか?」「はい」の二つの質問に対する答え「はい」は、その意味にかなり重大な違いがあるにも関わらず、同じ1ビットです。 もっと言ってしまえば、情報理論では「情報」とはビットが複数個まとまったものであり、それ以上でも以下でもないと考えます。すなわちそれが表しているのが何かと言うことにはまったくお構いなく、はい、いいえ、いいえ、はい、はい・・・といった物(記号列)が情報理論での情報なのです。 何か変じゃないかって?確かに変ですか変じゃありません。 もしかして昔、図形の「円」がどうして丸いのか悩んだことはありませんか?これは悩むことが間違いで、丸い物が円だと「定義」されているからなのです。すなわちみんなでそういう物をそう呼ぼうと決めたからそうなっているだけでした。 情報理論における「情報」というのはそういう物なのです。 そしてコンピューターが扱う情報というのも、まさに「この意味での情報」でしかないのです。コンピューターはよく「情報処理機械」と言われますが、そこで扱われている情報には「意味」が完全に抜け落ちています。コンピューターが扱う情報とは「単なるビットの羅列」にしかすぎないのです。 これではHAL9000のようなコンピューターがなかなか現れないのも納得がいくのではないでしょうか。 さて「はい」とか「いいえ」は英語では「YES」「NO」書きます。そこで「はい」を「1」、「いいえ」を「0」と表記するという規則を作っても、規則に同意してもらえれば問題はありません。 ここでコンピューターが2進法を使って計算することを思い出しましょう。二進法で表された数値は例えば10111010001とかになります。これを見るとビットが並んでいる!と解釈することもできます。 というわけで結局、コンピューターの世界ではおおむね1ビットとは以下のような意味で使われています。 ビットとは、二進法で表した数の一桁のことである。 すなわち100ビットの情報とかデータといった場合は、そのデータを2進法で表記したら100桁になるということです。 ビットと並んでよく使われる言葉にバイトがあります。これはビットがわかれば全く問題がありません。なぜなら 8ビットのことを1バイトと呼んでいる だけだからです。 とにかくこの言葉は今後よく使われます。例えばハードディスクの容量が1GBだとか、モデムの通信速度が28800bpsだとか、データの量を表現したいような場合には必ず登場しますので、是非覚えておいてください。
ええ?ふつうキロとかメガっていうのは1000倍とか1000000倍のことを指すんじゃないか?と思う方もいるでしょう。でもコンピューターの世界では1024は2進法で10000000000となってキリのいい数なのです。 数字が長すぎてうっとうしいところで上を見てもわかるとおり、二進法は0と1しかなくて便利ですが、ちょっとした数でもやたらに桁数が多くなって見づらいですね。たかが200や300程度の数字で9桁にもなってしまいます。 10進法の世界でも同様で、長い数字に適当に桁区切りを入れます。二進法でも同じような感じで 1,0000,0000,0000,0000 と表記してもいいのですが、さらに長くなってしまいます。 そこで上の四桁ごとに以下のようなルールで0〜Fの文字を当てはめて 0000=0 0001=1 0010=2 0011=3 0100=4 0101=5 0110=6 0111=7 1000=8 1001=9 1010=A 1011=B 1100=C 1101=D 1110=E 1111=F
と表記するのが良く行われます。 これは実は数を16進法で表記したのと同じです。コンピューターの世界で本などを見ると16進数で書かれているのはこんな理由によるのです。 ですからプログラマーが自分の年齢を20歳と主張した場合、実際は32歳です。 これは単に人が見て見やすくするという以上の意味はありません。
要するに細かいところはともかく一番重要なのは コンピューターは0〜一定値以内の整数しかわからないという点です。 |