• ベストアンサー

機械語はどう定義づけたのか?

 先日、この内容の質問をしたのですが、文章が下手で理解してもらえなかったのでもう一度・・・  ちょっと前は、0101 とこんな数字でプログラムしていたというのは分かります。  ですが機械語で、「0001」(適当です)というのを、一番はじめに「1」という数字の事だ・・とコンピューターに覚えさせたのは、どうやってやったのでしょうか?  特に割り算や掛け算の意味をどう分からせたのか知りたいです。  お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.4

簡単に、説明します。 まず、論理回路については理解してますか? 例えば AND回路 http://www.geocities.jp/hiroyuki0620785/intercomp/logic/basiclogic/logicAND.htm 論理回路を組み合わせれば、足し算回路など作れます。 http://www.geocities.jp/hiroyuki0620785/intercomp/logic/adder/halfadder.htm この様に論理回路を組み合わせていけば、ハード的にプログラム(の様なもの)が出来ます。 内容を理解する必要はないですが、参考までに。 掛け算回路 http://www.geocities.jp/hiroyuki0620785/intercomp/logic/adder/multiplier.htm 割り算回路 http://www.geocities.jp/hiroyuki0620785/intercomp/logic/adder/Divider.htm コンピュータの内部は、この様な論理回路の組み合わせで出来ています。 (実際の内容は、上記の物とは比べ物にならないほど複雑です) コンピュータの回路そのものが、プログラム(の様なもの)なのです。 その回路の設計がプログラミングに相当します。

dorusi
質問者

お礼

ありがとうございます! すぐには理解できそうに無いですが、このリンクを熟読すればできそうです。 自分に大した知識が無いのに、このような質問して申し訳ない気分です・・・

その他の回答 (3)

  • Kon1701
  • ベストアンサー率24% (1445/5856)
回答No.3

機械語、まず数字と命令が混在しています。数字も、普通に言う数字とアドレスが混じっています。 では掛け算をどう行うか?  まず掛け算の命令を認識します。 次に掛け算の命令の処理を行います。2つの数字を取り出します。掛ける数と掛けられる数ですね。たとえばレジスタから取り出します。 そして、掛け算を行い、結果をレジスタなどに格納します。 コンピュータは数字を認識しているか? ある意味認識しているともいえますが、数字の1や2を覚える必要は無い、ということになるかもしれませんね。 たとえば、メモリ上に"1010"というのがあったとして、数字と命令はメモリ上は必ずしも区別していません。プログラムに誤りがあると、数字を命令として実行したりすることもあります。

dorusi
質問者

お礼

ありがとうございます 僕にとっては難しい分野です・・・ 命令というのが良く分からなかったです。

noname#23118
noname#23118
回答No.2

ハードウェアに直接コーディングされてます。 命令数分回路があり、01ならA回路、02ならBの回路で処理するという風になってます。 Aの回路では命令の後ろの2バイトをレジスタに読みこむ。 という感じにおり、それらを複合化する方法を機械語のプログラムで記述するわけです。 #最近のCPUはマイクロコードに変換したり、回路を共用してたりするので 一概には言い切れませんが、ステーメントごとに回路が違うと言う概念で問題ないです。

dorusi
質問者

お礼

ありがとうございます。 それにしてもその仕組みを最初に作った人はすごいですね。

noname#58440
noname#58440
回答No.1

  1とは電流が流れる、0は電流が流れない、要はスイッチのonとoffの関係です。 回路を接続して電流を流す事を1、回路を開いて電流が流れない状態を0、と人が勝手に言ってるだけです。 割り算や掛け算は足し算と引き算き組み合わせです。 例)3x3は3を3回足します。 コンピュータはその驚異的な速さに物を言わせ簡単な事を猛烈に繰り返してるだけです。  

dorusi
質問者

お礼

ありがとうございます。 とても分かりやすかったです。 電流が流れてるのが1・・・なるほど・・・全然知りませんでした。