• ベストアンサー

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

 先日、この内容の質問をしたのですが、文章が下手で理解してもらえなかったのでもう一度・・・  ちょっと前は、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・・・なるほど・・・全然知りませんでした。

関連するQ&A

  • cpu 機械語

    cpu 機械語 私は工学部の出身ではないのですが、CPUは機械語を理解してコンピュータを動かすと聞いています。cpuはなぜ機械語を理解できるのでしょうか? 人間の脳とはちがうものだとは思うのですが・・・?CPUは人間が作り出したものであるなら、人間が分かりやすいC言語などを直接理解できるように開発すればいいのではないでしょうか? 根本的な質問かと思います。長くなってもかまいませんのでご意見お聞かせ下さい。 お願いします。

  • √について理解できない

    √の計算をしているんですが、ただ機械的に解いているだけで未だに√の意味がよくわかっていません。 例えば√2や√3は 1.414213562…… 1.732050807…… と永遠に続く無理数ですよね? そんな数同士を掛け算したり割り算したりできるのかと疑問に思ってしまうんです。 それと、√4=2のように整数とイコールになるモノは理解できるんですが、√20=2√5 、 √80=4√5 などの整数とルートで表される数字の意味がよくわかりません。「なにがどうわからないの?」と訊かれると困ってしまうのですが……。 頭が固く、こんな質問をしてしまって申し訳ないのですが、「√」というものについて説明をお願いします。

  • ポケコンの機械語(マシン語)

    1986年に工学社より「シャープポケットコンピューター機械語活用マニュアル」という本が出ておりますが、シャープのポケコンのどの機種の機械語について書かれているか、また内容・項目はどんな感じなのかをご存知の方はお教えください。 以上、よろしくお願いいたします。

  • Texでの数式

    Texで 虫食い算の掛け算と割り算を 書きたいのですが、空欄のかきかたがわかりません。 どなたか、教えていただけないでしょうか。 (できれば、適当なプログラムをのせていただければ。) または、Texについて詳しいことが、書いてある サイトがあれば、それでもかまいません。

  • 仕事においての足し算、引き算などの意味

    仕事においての足し算、引き算などの意味 上司に仕事は足し算、引き算、掛け算、割り算が出来なければいけないと言われましたが恥ずかしながら、理解できていません。 あと、友達が仕事は上記が必要だが、会社を経営するには上記のやり方では上手くいかないと言っていましたが、それも理解できません。 1、仕事においての足し算、引き算、掛け算、割り算の意味を教えて下さい。 2、仕事においての足し算引き算掛け算割り算で一番難しいのは掛け算割り算だと聞いたのですが、一般的にはそうなのですか?また、なぜなのでしょうか? 3、仕事では足し算引き算掛け算割り算が必要なのに経営ではなぜやり方が違うのですか? 4、仕事においての足し算は仕事をやった分だけ結果がプラスになる。 割り算は1時間かかってた仕事を10分で終わらせる。 みたいな意味だと勝手に解釈してますが違いますかね?

  • 分数の掛け算を分かりやすく理解させる方法

     お世話になります。 例えば、   9÷3=3   9×1/3=3   どちらも計算はできるのですが、割り算の意味は理解できる  ようなのですが、分数になるとなぜかけ算になるのかが理解で  きないようです。   いろいろ説明してみたのですが、×の記号を使うのになぜ割り算と 同じ答えになるのかが上手く説明できません。  分かりやすく理解できる方法を教えてください。  宜しくお願いします。

  • プログラミングについて困っています。

    プログラミングについて困っています。 現在、大学二年で、大学でいろいろなプログラミングを習っているのですが、去年はプログラミングを教わりましたが、とても難しいものでした。 今年はさらに難しくなり、わけがわからなくなるのが必須のような気もしていて本当にやばいです。 今年行うものは、まずコンピュータの機械語および、アセンブリ言語によるプログラミングで内容はループ構造、整数掛け算ルーティン、割り算ルーティンといった全くわけのわからないものをするみたいですが、 不安すぎます。何かいいコツや、参考書などがありましたら教えてください!お願いします!

  • スクリプトとは?

    スクリプトの意味に関して疑問に思った点があります。 http://e-words.jp/w/E382B9E382AFE383AAE38397E38388.html 上記サイトにて >プログラムはコンピュータの理解できる機械語に変換して実行されるが ここまでは理解できるのですが >そのプロセスを自動化して簡単に実行できるようにしたものをスクリプトという。 コンピュータが理解できるのは機械語だけであると認識しておりましたので、この「自動化」の意味が理解できません。 機械語に変換せず、どのようにコンピュータに理解させているのでしょうか。 プログラマとしての経験が浅いのでなるべくわかりやすく説明していただけると助かります。

  • 機械語

    番地機械語ニモニック表記コメント 0 11101000 Shift 8 ;無駄な命令.ただしAccumulatorの内容は0になる 1 10011111 Store 31 ; Accumulator の内容を31 番地へ格納 2 01100001 Load 1 ; 1 番地のデータ(Store 命令) をAccumulator へ 3 01000110 Sub 6 ; 6 番地の内容(= 1) をAccumulator から引く 4 10000001 Store 1 ; 引いた結果を1 番地に格納 5 01100111 Load 7 ; 7 番地の内容(= 0) をAccumulator へ 6 00000001 Jump 1 ; 1 番地にジャンプする 7 00000000 0 ; 0 データの保管場所 このプログラムが停止するのはどんなときですか? これを実行したら3分くらい止まらなかったのですが・・・

  • 受験生が数学になじむための参考書籍

    質問者は大学受験生です。 受験勉強の合間に岩波新書の「数学入門」を偶然手に取ったのですが、それは私の数学への印象を変えてくれました。 数学の各項目の意味をその歴史などを交えながら解説するその文章を受けて、私の「めんどうでややこしい」という数学へのイメージはいくらか払拭され、少し感覚的に数学というものを考えることができ、それは数学を勉強する上で補助線となりました。 かけ算やわり算、分数など、当然理解していると思い込んでいたところにまで連れ戻されたのは特に衝撃でした。私はかけ算が数量を変化させる演算であるということすら理解していなかったのです。 そして今、中学~高校レベルの数学に対して感覚的に考えることを促してくれるような副読本となりえる書籍を探しています。適当な書籍などをご存じでしたら教えていただけますでしょうか。

専門家に質問してみよう