- ベストアンサー
CPUで行われている演算について
CPUでは演算が行われているということを勉強しました。先生に足し算はどのような仕組みになっているのかと質問されましたが、こたえることができませんでした。どなたか簡単でもいいので教えてください。急ぎでお願いします!!
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
論理演算の話を#2の方がしてくださってますので、それに便乗して自分の補足だけさせていただきます。 CPUの中で足し算を行う場合、まずコンピュータは、内蔵されたレジスタに値を取り込みます。 レジスタとは、1バイトからなるCPU内部のメモ帳のようなもので、ノイマン型CPUであれば必ず持っているものです。 インテル系のプロセッサですと、1~4バイトの可変長レジスタとして使えるものが6個だか9個だか内蔵されています。 このとき、単純な四則演算であれば、足す数をAレジスタ、足される数をBレジスタに代入します。(このA、Bという名前は仮称ではなく、本当にA、Bという名前です) 次に足し算コマンドをCPUが受け取ると、上記手順にて代入されたAとBの値が計算されます。 計算方法は#2の方のおっしゃる論理演算によるものです。 そして次に、論理演算だけでは処理しきれない「桁上がり」や「10進と2進の差異」によって起こる計算間違いの補正を行い、最後にレジスタAに結果を戻します。 これが(手短なのでかなりゴチャゴチャしちゃってますが)中級者向け(笑)の説明です。 上級者向けになると、フリップフロップ回路だとか、内部の細かい原理の説明が必要になってくると思いますが、ここ以上はさすがに専門家でないと難しいと思いますので、先生もそこまで求めてないでしょう(^_^;
その他の回答 (4)
- Aquarius172
- ベストアンサー率36% (111/308)
#2です。 一部表現に誤りがありましたので訂正致します。 [OR]と表現しているところは[XOR(exclusive or)]です。 ついでなので説明。。。 ORは[論理和]といい下記のような論理になります。 0ro0=0 0or1=1 1or0=1 1or1=1 XORは「排他的論理和」といい下記のような論理になります。 0xor0 = 0 0xor1 = 1 1xor0 = 1 1xor1 = 0
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
- Aquarius172
- ベストアンサー率36% (111/308)
簡単に説明するなら。。。。 たとえば、1+2を計算する場合、私たちは1+2=3と計算します。 しかし、コンピュータの世界には数字は[0]と[1]しかありません(2進数)。 コンピュータのCPUが8ビットCPUとした場合、1を[00000001]、2を[00000010]と解釈します。 また足し算は論理演算の[OR]と解釈します。 したがって。。。 00000001 OR 00000010 ------------ 00000011 となります。 2進数[00000011]は3なので、答えは3となります。 ちなみに3+1は。。。 00000011 OR 00000001 ------------ 00000010 繰上00000010 ------------ 00000100 2進数[00000100]は4なので、答えは4となります。
具体的に言うと、何を答えればいいんでしょうかね?(^_^; 初心者向け、中級者向け、上級者向けと各種ございますが(笑) 初心者向けの簡単な説明としては、1+2=の計算をする場合、「レジスタAに1を読み込む」「レジスタBに2を読み込む」「レジスタAとBを足す」「レジスタAに結果を書き込む」という説明がなされます。 ですが、実際にCPUの内部で行われている操作はそれよりはるかに複雑で、わずか四則演算を行うだけのために「CPUのメモリーゲートを開く」「演算回路へ数値と演算子を流す」「メモリーリフレッシュを発行」といった操作が行われています。 また、演算回路の内部でも、「論理演算ゲートを開く」「演算回路の結果を補正回路へ流す」といった処理があり、細かくいえばどれだけでも細かくいえてしまいます。 もしあなたが上記の回答で満足できるならいいですが、もしもっと細かい説明が必要なら、具体的にどのような設問だったかを補足してください。
補足
お答えいただきありがとうございます。実際、先生がどんな答えを期待してるかよくわからないんですよね (・o・;)大学の教育学部の物理の授業なんですが、ちなみに中級者レベルの説明も教えていただけないでしょうか??