閑話休題2 |
さて、コンピューターは2進数で計算するというのは、もう誰でも知っていることですが、 具体的にどういう仕組みなのかを知っている人は少ないのではないかと思います。 データーを効率よく作って行くには、この基本となるコンピューターの計算方法を知っておくことも 有益です。 コンピューターの記憶方法というのは、要するにコンデンサーがずらずら並んでいるものと 考えてもらうと解り易いでしょう。それぞれを素子と云います。 電気が充分入ってないコンデンサーを□、 電気が満たされているコンデンサーを■、 と云う風に表すと、□が0で、■が1、と決めてやるわけです。 コンデンサーを使うのは、コンデンサーは電気を貯めておく素材ですから、 そこに電気が充分溜っていない状態では、電流が流れてきてもそれを取り込んでしまいます。 1つのコンデンサーに電流を流したとき、電気が吸収されれば0、吸収されなければ1 として判断できるわけです。 一つのコンデンサーのとる値は、 □で0、■で1、と云う風に、2通りしかありませんから、この意味で2進数処理が出来るのです。 コンデンサーがずらずら並んでいると □□□□□□□□となっていれば、数値として、00000000 □□□□□□□■となっていれば、数値として、00000001 ■□□□□□□■となっていれば、数値として、10000001 の様になります。 コンデンサーの場合は、一回ポッキリの計算では使えますが、電流を流すことで、 コンデンサーの状態が変化してしまいますから、二度は使えないわけで、 初期化し直さなければなりません。 データー保存のためには、別の方法を考える必要があります。 この為にかつてはパンチカードと云って紙に穴を空けたものを使っていました。 紙に光当てると、穴の部分で光が通りますから、これを1 通らなければ0と判断するわけです。 この紙が記憶媒体になり、必要に応じて何度でも使える保存装置であったわけです。 今は磁性体を使います。フロッピーもハードディスクも理屈は同じです。 ディスク表面に小さな磁石を並べたものだと考えてください。 磁石を↑で表すと、その向きで、↑に対応する場合を1、それ以外を0としておきます。 →→↑→→↑↑→ と並んでいる部分のすぐ側をコイルを走らせると、 走っていく途中でそのコイルに電流が流れます。 高校で習った誘導起電力ですね。それを読みとれば良いわけです。 →→↑→→↑↑→の場合であれば、00100110ですね。 2進数というのは値の取り方ですから、一つの素子が0又は1の二通りの値しかとらず、 素子が2つ並んでいれば、00、01、10、11、の4通りがあります。 これは2×2=4通り 素子が3つ並んでいれば、000、001、010、011、100、101、110、111、の8通りで これは2×2×2=8通り みたいな話になるわけです。 ここで、お解り頂けると思いますが、 たとえば、数値の並びが、 00100110となっていたとして、 これを2個の並びの組合せと見るか…00、10、01、10 4個の並びの組合せと見るか………0010、0110、 によって意味するところが違うものになります。 パソコン用語で16ビットとか32ビット、あるいはディスクのフォーマット等というのは、 この数値の並びをどう区切り、どういう約束で処理するかを決めているものなのです。 2進数の組合せを、少し列挙しておきましょう。 コンピューターを使う上でつきまとう特徴的な数字が出てきます。 これは素子を何個で区切るかと云うことと深い関わりがある と云うことがお解り頂ければ結構です。 素子2個…2×2=4通り 素子3個…2×2×2=8通り 素子4個…2×2×2×2=16通り 素子5個…2×2×2×2×2=32通り 素子6個…2×2×2×2×2×2=64通り 素子7個…2×2×2×2×2×2×2=128通り 素子8個…2×2×2×2×2×2×2×2=256通り |
さて、データー処理の話に戻りますが、コンピューターで文字表示出来るようになったのは、 今で云う半角文字は8ビット時代からで、漢字などの全角が表示できるようになったのは16ビット時代になってからです。 半角は8×16の素子、全角は16×16の素子で表されます。 ビットというのは素子1個のことです。 半角1個分を1バイト、全角1個分を2バイトと呼びます。 英語圏では1バイト単位でしか使いませんが、日本語の場合は2バイト単位で使います。 文字化けは、ここに原因があって生じるわけです。 それはともかく、 磁気ディスク装置では、セクターという単位でデーターを読み書きします。 それは例えば、1セクター=512バイト=512×8×16(=65536)ビットとすると、 512バイトを一度にまとめて読み込んだり書き込んだりすると云うことです。 データーの形式を考えるとき、この事を考えて作るかどうかで、効率がよいかどうかが決まってきます。 単純に云うと、 1データーを、512バイトつまり256文字以下で作れば、一回の読み書きで1データーの処理が終わりますが、 1データーが257文字になっていると、2回の読み書きが必要になります。 或いは、1データーが128文字以下で作ってあれば、1回の読み書きで2つのデーターが処理できます。 長々記してきましたが、ランダムデーター処理の対象となるランダムデーターではその仕様を 上記の様な事を考えて作ると処理効率が上がるわけです。 それはデーター数が増えれば増えるほど、処理速度や、データー容量に関係してきます。 勿論、考えなくても処理出来ますし、動作もしますけど、 それはまあ小学生の算数と大学生の数学というような、レベルの差と云うことになります。 ついでに記すと、昨今では可変長文字列変数が扱えるようになって、 データーベース処理が誰にでも簡単に出来るようになっていますが、 それでも、基本を知っているのといないのとでは大きな違いが出てくるという事ですね。 |