• 締切済み

2進数 負の小数のかけ算

(正の小数)×(負の小数)の2進数の演算について教えてください。 3.5×(-2.125)の計算で、 3.5×(2.125)=(11.1)2×(10.001)2の計算を行えばいいと思うのですが、(-2.125) になった時は、(-2.125) をどのように扱って、計算したら良いのでしょうか? 教えて頂けると幸いです。宜しくお願い致します。

みんなの回答

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.2

#1です。 >(1) -2.125 を加減算のときと同様に補数にする必要はありますか?   2の補数は整数の加減算の時のみです。 つまり、小数点のある数値については2の補数は使いません。 なので2の補数にする必要はありません。 >(2) ある場合、-2.125 を2進数でどのように表現し、計算した方がよいのでしょうか? ないですから、考える必要はありません。

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.1

計算機の中では、符号付の小数点付2進数は浮動小数点数表記に変換されて扱われます。 http://www.ctrlz.jp/jfp/binfp.html つまり「符号ビット+仮数部+指数部」、仮数部は絶対値表現、指数部は2の補数表現に変換されて扱われます。 そして浮動小数点数表記の2進数の掛け算が行われます。 つまり、符号ビットは符号ビット同士の掛け算、仮数部は仮数部同士のの掛け算が行われ桁上りがあれば指数部に加えられます。指数部は指数部同士の2の補数法による加算で計算が行われます。 質問者さんがどんな方法による2進法演算を望まれているかで掛け算方法が異なってきます。 浮動小数点数表記にこだわらなければ、 符号は符号同士の計算を行い、数値は「絶対値(正の2進数)同士の掛け算の計算」または「指数部を切り離して、整数部だけの2進数演算を行い、指数部は加減算で行い、積の結果に指数部を戻してやる計算」をすることでも良いかと思います。 計算例) 3.5×(-2.125)=(+11.1)2×(-10.001)2 =-{(111)2×2^(-1)}×{(10001)2×2^(-3)} =-{(111)2×(10001)2}×2^(-1-3)} =-(1110111)2×2^(-4) =-(111,0111)2 =-7.4375 どんな計算法をするのかは、問題の作成者が指定しないと作成者の意図にそった解答は作成できません。 問題の作成者(出題者)が、問題集(参考書)なら、そこに書かれている方法に従って計算しないと正解とされません(途中の計算で減点される)。学校の先生の授業であれば、その授業の中で行われている計算法をしないと先生によって減点されるだろう。 あなたのここでの質問の問題の質問では単に2進数の掛け算と書いてあるだけで、具体的な計算法の指定(説明)が書かれていませんので、回答者は書かれていない、計算法の指定に沿った解答を作ることができかねます。 ただ、経験上、この位の方法でいいだろう、といった解答しか示せません。 質問者はどんな計算法を望んでおられる問題の作成者に確認して補足に書いていただけませんか?

next_step0
質問者

補足

info22さん、ありがとうございました。また、質問の内容が漠然としておりもうしわけありません。 3.5×-2.125の計算方法はわかりました。 (1) -2.125 を加減算のときと同様に補数にする必要はありますか?  (2) ある場合、-2.125 を2進数でどのように表現し、計算した方がよいのでしょうか?