0と1だけで書いたプログラムが動作する理由
デジタル・データは0と1の数列から出来ているとはよく聞く話。しかし、曖昧な理解のままにしている人も多いのではないでしょうか。
「おしえてBP!」にてプログラムは0と1でなぜ動く?改行もなし?(素人の疑問)という質問がありました。
(1)プログラムは2進数の0と1で動いているそうなのですが、なぜパソコンは0と1が判断できるのでしょうか?(2)0と1しかないってことは、改行や空白も使えないのでしょうか?
これに対する答えが以下
実際に0と1ではなく、電極のON/OFFで判断してます。 それを分かりやすいように0と1で表してます。
0と1と言っても、ホントに0と1だけではなくて、 何桁かまとめて使っています。 たとえば、文字コードは8桁か16桁の0か1なんです。 改行であれば、8桁の 00001010(行を変える) 00001101(行頭に戻す) この2つです。 空白は、00010000です。
10進数だって0〜9の9個しかありませんが、 10の位や100の位を利用して、どんな大きな数字もできるでしょ
プログラムなどの情報や命令はメモリの中に0(低い電圧)と1(高い電圧)の組み合わせで記憶されており、CPUはこの0と1の組み合わせを読み込んで、命令に従った演算を行ってます。これが(1)の答えです。(CPUは電圧レベルで0と1を判断しているわけです)
というわけですね。
便宜上0と1とは言っているものの、実際には電気のON/OFFというか電圧の高/低を読み取っているという、ごくごく単純な原理を応用しているだけなのですね。
モールス信号と同じじゃん!
でも、(又聞きなのでホントかウソか知らないのですが)実際にはこの電圧の高/低を判断する"しきい値"が微妙らしいです。0.3程度の電圧は0に、0.8程度の電圧は1に揃えなければなりません。では0.5はどっちに振る?みたいな。CD-Rのエラー補正などがそういう問題のようです。
ですから、単純にファイルコピーといっても、ちゃんとコンペアしてないものについては、全く同じデータがデュプリケートされたとは限らないこともあるようですね。
音楽制作をする方のなかには、バックアップした音声データは音が変わる、と言い切っている方もいるほどです。
データ自体は0と1できっぱり分けられていても、それを判断する機械というか電圧は微妙にゆらいでいるというわけです。
ま、どこまでホントかどうか分からんので、参考まで。
ウケる!オトナの手品?子どもがヨロコぶ!飲み屋でモテる!大人の雑貨マジック超厳選49連発!!
投稿者 愛場大介(Daisuke AIBA / Jetdaisuke) : 2006年2月14日 17:15