コンピュータはTRUEとFALSEしか処理できず、単純計算をものすごいスピードで繰り返しているだけという話を聞いたことがありますが、TRUEとFALSEしか処理できないコンピュータがどのようにしてOSやソフトウェアを処理しているのでしょうか。わかりやすい考え方、サイトを教えてください。

回答の条件
  • 1人2回まで
  • 登録:2008/06/02 01:14:39
  • 終了:2008/06/04 00:27:47

回答(3件)

id:spyglass No.1

spyglass回答回数455ベストアンサー獲得回数292008/06/02 01:35:23

ポイント30pt

人間の世界では数字は0や5や10と沢山あります。

色や形も無限にありますね。

ところがコンピュータの世界では電流を流すか切るかの0か1の正解しかありません。

まさにTRUEとFALSEの世界です、これを2進法と言います。

但しその0と1を8ヶのBOXに入れれば00000000~11111111まで数える事ができます。

10進法に直すと0~255までです。

コンピュータはこの2進法のBOXを足したり引いたりしながら答えを導き出しています。


実際のコンピュータの中では0と1であっても10進法に変換すれば人間は目で見る事が出来ますね。

プログラムの言語をコンピュータが認識しているのでは無く人間が見える形に置き換えられてるだけなんです。


この辺りを参考にしてください。

http://www.nec.co.jp/literacy/basic/chapter-1/page-c1-2-2.html

http://www.shuiren.org/chuden/teach/code/main2.htm

http://www.plustarnet.com/aspil/Programming/c05.htm

http://www.rd.mmtr.or.jp/~bunryu/nisinhou2.shtml

id:kumosuk841 No.2

kumosuk841回答回数2ベストアンサー獲得回数02008/06/02 09:07:56

ポイント10pt

http://mrs.suzu841.com/it/

がこれの答えになるとおもわれますが?

id:quintia No.3

quintia回答回数562ベストアンサー獲得回数712008/06/02 11:13:24

ポイント40pt

「コンピュータはTRUEとFALSEしか処理できず、」が曖昧ですね。

「TRUEまたはFALSEを入力するとTRUEまたはFALSEを出力する回路」が基礎です。

http://www.wakhok.ac.jp/~fujiki/infosys2/infosys2-2005-7.html

の上半分を見てください。

NOT回路以外は、2つの入力から1つの出力を得ていることに注意してください。(「TRUEとFALSEしか処理できず」という文から察すると「2つの入力から1つの出力を得る」ことを想像していなかったかもしれないので)

これらを「たくさん繋げてやる」ことで計算ができます。

先のページの後半から加算機の説明が始まります。

たかだか2進数1桁の足し算で、2進数2桁を得る機械です。

しかし「2値を処理する回路の組み合わせで加算ができる」ことは分かるはずです。


そしてメモリ、つまり記憶装置ですね。

フリップフロップというのが、一番単純な記憶装置として機能します。

http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AA%E3%83%83%E3%83%9...

2つのNAND回路が、お互いの出力からのフィードバックを入力にして組み合わされています。

Rに信号を入れるとこの回路(Q)は1を出力し、Sに信号を入れるとこの回路は0を出力します。

そして信号を入れない間は状態を保持します。


あとは規模の問題です。

加算機をたくさん繋げてやれば多くの桁の足し算が出来ます。

加算機に入力するデータを、たくさんのフリップフロップ(=メモリ)の固まりの、ある場所から持ってきてある場所に格納するよう、「ある場所」を指定できるようもできるでしょう。

メモリの一固まりに意味を持たせて、「この固まり」なら「このメモリとこのメモリを足してこのメモリに入れる」というようなことが出来るようになります。(CPUの16bit, 32bit, 64bitはこの一固まりの大きさに由来します)

メモリの一固まりに意味を持たせて意味を持たせることができたら――面倒ですね。コマンドと以降呼びましょう――今メモリのどの部分をコマンドとして実行中なのか? という概念がでてきます。その「実行中の位置」もどこかのメモリに保持できますね。

「この値が0なら、ここへジャンプ、0じゃないならここへジャンプ」というようなコマンドが作れます。

繰り返し処理ができるようになると、かけ算ができるようになります。

これで「プログラムが書けるようになった」という状態になります。


メモリ上のこの値を書き換えるとディスプレイ上のある素子がある色になるとか(昔は本当にプログラマがそうやって表示させていたのですよ)、キーボードのあるボタンが押されている間はこのメモリが1になっているとか、入出力のためのデバイスとの取り決めができ、あるいはデバイスをコントロールするためのコマンドができ、ここで今のパソコンの原型になってきます。


その後はプログラマが自前でやっていたこと(画像表示とか)を OS が肩代わりしてやってくれるように変わり、どんどん OS が大きくなってきたわけです。

なので、現在のコンピュータはここまで書いてきた様な単純なものとは全く違います。

でも、TRUEまたはFALSEの2値を扱う回路の組み合わせで、「計算機とメモリが作れること」、「計算機とメモリが作れればプログラム」が作れることが雰囲気だけでも伝わればいいのですが。

  • id:a2gi
    解答できないのでコメントで(よかったらポイントください)
    簡単なのは
    http://www.pressnet.co.jp/2007_08/0824_22.shtml
    です。
    つまり、1個の質問でYES/NO二通りの情報を持たせることができます。これを繰り返すことで2^n乗通りの情報を持たせることができます。
    1.あなたは日本人ですか?
    2.あなたは男ですか?
    3.あなたは成人していますか?
    これだけで
    日本人男未成年、日本人女未成年、日本人男成年、日本人女成年
    外国人男未成年、外国人女未成年、外国人男成年、外国人女成年
    という8通り(2^3)の情報をあらわせます。
    このように質問を何万、何十万とOSの中には用意されているのです。
    前述のリンクのフローチャートをコンピュータは一瞬で端っこまでたどれると考えるとよいでしょう。
    今日の朝飯何にしようというのをちょっと考えてYES/NOだけでもできるはずです。(すごくたくさん必要ですが)
  • id:kuruma_neko
    コメントにポイントを送るのはどうやるんですか。
    回答終了時ののポイントの割り振りで選択ができません。
  • id:quintia
    コメントにポイントを「割り振る」ことはできません。
    質問終了後に個別にその人に「送る」ことになります。
    http://www.hatena.ne.jp/help/point
    にポイントを送信する画面へのリンクがありますね。
  • id:kuruma_neko
    思っていたより簡単な仕組みで、何となくわかりました。ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません