SSブログ

電子計算機が2進法を使う理由(2) [プログラミングとか]

副題的には「プログラム打ちになってもスクリプトキディになるな」的なアレとか、
例えば(主に若い子・オッサン・ババアでもイイが)「コンピュータってナニしてるの?」とか、
ソレ系の職業に就いてみたけど「やっぱアレが解んね」とか悶絶しているヒトに向けた読み物のヒトツ。

こういう時代なので詳しい話は適当に ggrks というか詳しいヒトに聞いたり書籍を見て頂くにしても、
というか詳しくナニすれば本が一冊どころか数十冊も必要なぐらいのネタを書き留めていくのですが、
そうは言っても「じゃあナニから調べたら良いんだ」ってのが判らないヒトも多いと思うので、
そういう含みもあって長編ではなくライトな読み物で着想が得られるヒトが増えれば良いな的なアレです



…ココまでがテンプレ。

前回はいきなり2進法の話をしましたが、というかもう少し話を広げておくと
n 進法( n : 1以上の自然数)のルールについてズゲーーーーーーーーー大雑把な話の事でした。


片手の指で2進法を数えるアレw


にしても多分、2進数を機器(ハードウェア)で実現したのは歴史の中でも最近の気がします。
どのぐらい最近か?というと、電子回路で論理演算が実用化された以降じゃねという気がしますが、
俺は専門的には全然知りませんし、例のごとく詳しいことは google 先生を契機に自分でお調べ下さい。




ということで適当に google 先生に聞いたトコロで、やっぱり昔は今から見ても良く判らん手順を使う
機械式計算機(主に歯車で10進数的なナニをアレしてたっぽい)を使用していたらしいです。
「え?昔の人って手計算だけじゃないの?良くてもソロバンどまりじゃね?」とか思っていたとしたら、
ソレはソレでチョット昔の人に失礼をブッこいてる感じがしますが、ナニに使ってたかって?




例えば艦砲射撃とか時計とかに使ったとは思います詳しくは知らんけど、
しかして過去のハードウェアで機械的にモノを数えるとなると、やっぱり歯車を使った何かかなと。
つーても戦艦大和の主砲なんて(最大射程:46[km]なら更に)殆ど当たらなかったらしいですが。

射撃とか激しいくない話で実用してたこの手の製品のヒトツは、間違いなく時計でしょうなぁ。
10進、12進、60進なんでもござれでカウントアップしていく機構もそうだし、
何より時間の狂いが少な   …現在と比べたら酷なレベルだとは思いますが、
とにかく実用にはなっててお世話になったヒトも多かったとは思います。

しかして機械式というは歯車を使ってナニがアレって機械自体が大きくなりやすいのがミソなのと、
歯車は回ってナンボなので処理高速化には多分に限度が結構早く訪れていたんだとは思います。
その後に機械加工というか電子技術の急速な発達によって電子計算機ってモンが実用になりつつ、
ココでやっと本題の話がデキる前提が出てきたような気がします。




何故に電子計算機は2進数を使うのか
つーてもコレも他所様でいっぱい書いてあるので詳細は普通に端折りますが(´Д`)
機械でデータを覚える、しかも大量にとなると敷地面積というかハードウェア容積がトンデモナイ事になる、
電子計算機ならそのへんが割とアレじゃね?とかいう歴史の流れになったんだと思います。
つーても細かい話は俺は知りませんが、結果として原理的なアレは一応知ってるつもりです。



  • 機械式に比べると部品容積が小さめ
  • 値を電圧や電流の高低で貯蔵できる
  • 論理演算が表現デキる


部品容積が小さく済むのは上記で書いたとおりなので、以降の話では省略します。
論理演算については後ほどのネタで扱う予定なので、今回のネタではひとまず忘れてイイです。
でも「論理演算」ってコトバというか概念があることぐらいはアタマに入れて頂けると嬉しい。

んで高低で貯蔵ですが、電子機器だと電圧を保持する方が圧倒的にラクらしくて、
ハードウェア毎に若干差異があるものの、大抵は一定より高かったら「高 (Hi)」と保持し、
一定より低かったら「低 (Lo)」とかいう識別を電気的に行ってデータを保持していきます。
コレで 2 進数一桁を保持できる訳で、更にコレを連ねていけば何桁でも 2 進数で表現





…ココで何故「Max / Min」ではなく「High / Low」で見るのか?の話を書いとくか。
この話って割とソフトウェア技術者になりたてのヒトがつまづくトコロなんですけども。



アナログ値は基本的にブレる


仕様書上は「最大電圧 5[V]、最低電圧 0[V]」でも実際には誤差が絶対に出るので、
というか俺の文章で絶対って使うことって非常に少ないんだけど、コレはもう特例中の特例。
その「どう頑張ったって誤差が出るんだから」という前提で「コノぐらいの幅を持たせようぜ」
ソレが上の図でいう「High / Low」になってくる訳で、電気回路だからバッサリバッサリと
何でも仏恥義理している訳でもなくて、むしろハードウェアに近い層では常に考えないとアカン話。


んで、実際の電子機器部品で「High / Low」を蓄える具体的な部品は?というと例えばコレかな。


コンデンサとかテープとか


ええっ?!テープ?とか思う方も居らっしゃるかもだが、テープ式の記憶媒体は現役で使われている。
実際にはデータを磁気で記録するか(磁気経由の)音声で記録するか違いはあれど、
どちらの部品も「(最終的に)電圧が幾つ掛かった状態だとアレ」とかいう管理に使える部品である。
詳細な話はもっと詳細にアレがナニしてしまう程度に腐るほどの書類があるので、
気になるヒトはソッチをどうぞというかソフトウェア屋さんはソコまで気にしなくてイイ話なので適当に省略w





…というあたりでシメたかったんですが、さっき書いたとおり論理演算の話が必要っぽいので、
「何故に電子計算機は2進数を使うのか」の話はソレを扱ってひとまず区切りにしましょう。


nice!(1) 
共通テーマ:自動車

nice! 1

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。