1st Stage:Scene 5

乱立する記数法


 一般に人間社会で数字が出てくれば、まず無条件で10進法である。だから、異なった記数法……例えばグロス/ダースの12進法にしても、分/秒の60進法にしても、本来は1桁で示すべき数値の後ろに、固有の単位をつけなければ成立しない。
 すなわち、210ダースは2グロス10ダースのことではないし、325秒が3分25秒と解釈されることも絶対にない。
 これらは、独立した記数法でありながら10進法に依存しているためでもあるが、そもそも複数の記数法が混在する場合には、必ず「何進法で示された数値」であるかを明示する必要があるのだ。

「要するに、リンゴ10個は何進法での10個かということッスよね!」
「そのとおりじゃ。ずいぶん、数に対する理解度がアップしたのォ」
「いや、それほどでもあるッス……」
「これこれ、ほんのお世辞じゃよ。何はともあれ、数に対して厳格なコンピュータの世界では、これらをきちんと区別をすることを基本としておる」
「エッ、いちいちッスか?」

 コンピュータの世界では、2進法、10進法、16進法、さらには8進法も含めると4つの記数法が対等に存在している。もちろん、本体内部は2進法だけの世界だから、正確には人間向けのコンピュータの世界ということになる。
 こういう状況下では、単に10個と表現しただけでは、実際に何個のことなのか確定できない。2進法なら2個だし、16進法なら16個になってしまうからだ。
 これでは意思の疎通のしようがないので、記数法のサインを明示して、こうした混乱を避けるようになっている。多くのコンピュータ書籍の場合、次のような記号を数値の後ろに付けて区別している。


 ・2進法:10b ………………… Binary(2進)の頭文字から
 ・8進法:10o ………………… Octal(8進)の頭文字から
 ・10進法:10または10d ……… Decimal(10進)の頭文字から
 ・16進法:10h ………………… Hexadecimal(16進)の頭文字から
 ※ 10進法は通常は何も付けない。
 ※ 記号には大文字が使われることもある。
 ※ 情報処理関連では数値をカッコで囲んでn進法のnを付ける。
 ただし、これについては絶対的な決まりがあるわけではなく、書籍内容やプログラム言語の仕様等によって、それぞれ独自のスタイルで記述されるのが実情だ。

プログム言語


 コンピュータに対する体系化された命令群のこと。いわゆるコンピュータのプログラムとは、これらの命令を組み合わせて所定の内容を実行するようにした指示書である。
 人間の言葉に種類があるように、プログラム言語にもいろいろなタイプと種類がある。
 そういう意味では、ここに示した用法も限定的といえるが、これ以外については個々のプログラム言語に依存したものと断定してよいだろう。

「フムフム……。8進法は実際には不要ということだったし、10進法はそのままでいいわけでしょ」
「そういうことじゃな」
「だったら、最後に“b”が付いていれば2進数。“h”なら16進数……とだけ覚えておけばいいんスか?」
「マ、だいたいはそれでコト足りるじゃろう。というよりも、記数法を区別をする必然性がわかればいいんじゃよ」
「……で、実際にはどんな場面で役立つんスか?」

 記数法を意識して使い分ける場面というと、具体的にはプログラミングに関わった場合に限られる。
 つまり、市販のアプリケーション・ソフトウェアを使ったり、ゲームで遊んだりするだけなら、知らなくても特に困ることはないということだ。

アプリケーション・ソフトウェア


 市販のワープロや表計算……というように、汎用的なデータを加工/作成するためのソフトウェアを指す。広義においては、音楽再生など単にデータを利用するだけのソフトウェアも含まれる。
 しかし、パソコンの使い方をマスターするだけではなく、本気でパソコンを理解するためには、記数法の知識は必要不可欠。これは、人間社会において数を自在に扱えなければ買い物もできないのと同じことだ。
 ましてや、成康のようにパ界へ旅立とうというからには、この程度のことは一般常識レベルといえる。パ界は、それだけ数にシビアなのである。
 逆にいうと、プログラムの正体はどういうものなのか、パソコンはどんな原理で動いているのか、パソコンの仕組みはどうなっているのか、カタログの数値を理解したい……といった探究心や向上心がないなら、こうした基礎知識も無用の長物となる。

「なるほど。つまりは、パ界を冒険するには必須というわけッスね!」
「そのとおり……ということじゃ」
「ならば、さっそく具体例でも示してもらいたいなァ」
「よかろう。しかと聞いておけよ」
「ハハッ。しかと聞いておきまッス!」

 例えば、10進法では千倍の単位をキロ(Kilo)というが、ベースが2進法では千倍はキリのよい区切りにならない。これは、記数法の相性から容易に想像がつくだろう。
 だが、このように数をまとめて扱える単位というのは、記数法にかかわらず便利で実用性が高い。問題は、16進法における1000hバイトを単純に1Khバイトとするわけにはいかないことにある。キロが意味するのは、あくまでも10進法における千倍だからだ。
 そこで、2進法がベースの場合は1000に最も近い210(=1024)をキロと称することになっている。
 パ界がビットを最小単位とする2進法の世界と認識していなければ、こういう話もスンナリと受け入れることができなかったに違いない。マカイ老師が手の込んだ解説をしてきたのは、ひとえに記数法が避けて通れないテーマだったからなのだ。
 参考までに、黎明期のパソコンはキロ単位の表現ができれば事足りていたが、現在ではその千倍のメガ(Mega)、そのまた千倍のギガ(Giga)へと急激に必要な呼称単位が広がっている。それでも、この先どこまで拡大していくのか見当もつかないのが実情だ。


 1キロバイト(1KB)=210 ← 1024(400h)バイト
 1メガバイト(1MB)=220 ← 10242=1,048,576(100000h)バイト
 1ギガバイト(1GB)=230 ← 10243=1,073,741,824(40000000h)バイト
 数学的には、千倍のキロ(Kilo)、百万倍のメガ(Mega)、10億倍のギガ(Giga)の先に、1兆倍のテラ(Tera)、1000兆倍のペタ(Peta)、100京倍のエクサ(Exa)と続いているので、いくら拡大しても当分は表現に困ることはないだろう。

「こんな巨大な数、一般庶民には縁遠過ぎて想像できないッスよ!」
「そうじゃろ、そうじゃろ。よく天文学的数字というが、これほど大きな数に出会えるのは天文学以外ではパ界ぐらいのものじゃからな」
「でも、こんなに数が巨大になると、たいていは大雑把というか、後ろのほうは適当に丸めてしまうんじゃないッスか?」
「そのとおり。だいぶ先読みをできるようになったのう」
「いや、それほどでもあるッス!」
「これ、いつまでもお世辞のわからんやつじゃ……が、実際にそうなのじゃよ。先ほど示した2進法ベースとの違いも、人間の世界では誤差の範囲で受け入れられてしまうんじゃからな」
「エ〜ッ! パ界は数にシビアなはずじゃなかったッスか?」

 パ界そのものは数にシビアだが、それを扱う人間には人間なりの事情や論理展開というものがある。
 いくらパ界で2進法をベースに数えるのが基本でも、人間社会そのものは相性の悪いほうの記数法(=10進法)が主役。ましてや、そこに人間性が前面に出てくるビジネスが関係してくると、内容の不一致があっても不思議じゃない。
 そもそも、10進法なら1000で1キロと称せるところが、2進法ベースだと1024を必要とすることが問題の発端なのだ。量り売りの商感覚からすれば、当然のことながら2進法をベースにはしたくない。
 その結果……かどうかは定かでないが、ハードディスクの製造メーカーは容量を10進法で示すのが一般的な傾向となっている。
 例えば、10GBの容量表示があるハードディスクを購入し、そのつもりでパソコン本体に取り付けても、画面には9.3GBとしか表示されないのだ。
 上げ底商法というわけではないが、ビジネスというのは時として実情を無視した独自の流れを作り出すものなのである。

 ちなみに、パ界においてギガの単位まで肥大化したものに、コンピュータが動作する基準となる電気信号(パルス)の周波数がある。一般にクロック速度とかクロック周波数などと呼ばれているものだ。
 詳しく説明するとキリがないが、要するにコンピュータはこの周波数でタイミングを計り、プログラム上の命令を処理しているのだ。したがって、クロック周波数を上げれば処理速度も上がる。
 コンピュータは、これまでノイズの影響や発熱といった諸問題をクリアしながら、次々と処理のスピードアップを重ねてきた。そして、とうとうメガヘルツ(MHz)からギガヘルツ(GHz)の時代へと突入したのである。
 構造上、明らかにパソコンの内部システムに関連するクロック周波数だが、こちらのほうは当初から2進法の世界には属していない。ラジオやテレビなどでお馴染みの電波周波数と同様に、普通に10進法で示されているのだ。
 そのため、1MHzといえばそのまま1,000,000Hzを意味する。パソコンというのは、このようにカタログ上でも複数の記数法が混在しているのである。
 いずれにしても、数値がここまで巨大化してしまうと、その端数がどうあろうと「大勢に影響なし!」というのも事実。しょせん、それが人間の数に対する感覚なのである。


COFFEE BREAK:デジタル式10進法

 パ界が、電圧の高低≪ハイ/ロー≫で2進法の世界を構築しているのは周知の事実となったが、実は人間と同じ10進法の世界にすることも決して不可能なわけではない!
 こう書くと論理が首尾一貫していないように思えるが、例えば10Vの電圧を10分割し、各電圧エリアに応じて0〜9を割り当ててやれば、図1-1.2にあったような10段階のデジタル階段ができ上がるのだ。
 しかし、実際にはこうしたコンピュータは研究されたことはあっても実用化されたことはない。
 その理由は、単純な電圧高低による≪1/0≫でも無判定エリアを設けているほどなのに、これを10分割もすれば安定性が格段に悪くなるからだ。しかも、段階別の無判定エリアを含めれば、全部で19レベル分もの判定を必要とし、ハードウェアの構造ははるかに複雑になってしまう。
 また、10段階ともなれば判定エリア内でも「通過中」なのか「確定」しているのか即断できない。アイデアとしては有効でも、実用には不向きなことばかりだったのだ。
 いっぽう、すべてを無段階のまま処理するレトロなアナログコンピュータが、工学分野などで依然として実用の域にあるという。
 温度変化やノイズの影響に弱く、今後も汎用とは無縁な存在でしかなさそうだが、人工脳のメカニズムにはアナログのほうが適しているともいわれている。
 栄枯盛衰は世の常。いつどこでどんなドラスティックな変化が起こるのか、未来が予測不能なのはコンピュータとて同じである。10年後は、どうなっているのだろうか?