• 締切済み

負の数の除算

ふと、疑問に思ったので、質問させていただきます。 負の数の割り算は、2進数だとどのような計算をしているのでしょうか? たとえば、-2/2が内部ではどのように扱われているかが知りたいです。 一度補数を戻してから計算しているのでしょうか? 0xFFFFFFFE / 0x00000002 なので、普通に計算すると値が変わってしまうので 基礎的なことですみませんが、よろしくお願いします

みんなの回答

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.3

加減算と違って乗除算は2の補数表現に対応できないので、計算するときには正の数に直して計算して後で符号を調整します。 これはCPU内でのハードウェアでの計算でも同様です。

回答No.2

CPU(ALUと言うべき?)内ではどうやっているかわかりませんが、 私が16ビットCPU(最大レジスタビット長は32ビット)で64ビットの乗除算をしなければならなかったときは、 補数で正の数に戻して計算後、符号を判定(元の数の最上位ビットの排他的論理和)し、符号補正という方法でプログラムしました。>>アセンブリ言語で! 余談ですが、加減算はそのまま足し込めば正しく計算できますね。

catsuya
質問者

お礼

ありがとうございます やはり、最上位ビットを見て、計算してるんですね。 何か、効率的な方法があるのかなぁって思ったんですが、 難しいようですね。 アセンブラも見てみます

noname#208124
noname#208124
回答No.1

計算後に補数を戻すのを忘れてませんか

catsuya
質問者

補足

その記述は抜けてましたね。 失礼しました

関連するQ&A