- 締切済み
負の数の除算
ふと、疑問に思ったので、質問させていただきます。 負の数の割り算は、2進数だとどのような計算をしているのでしょうか? たとえば、-2/2が内部ではどのように扱われているかが知りたいです。 一度補数を戻してから計算しているのでしょうか? 0xFFFFFFFE / 0x00000002 なので、普通に計算すると値が変わってしまうので 基礎的なことですみませんが、よろしくお願いします
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- rinkun
- ベストアンサー率44% (706/1571)
回答No.3
加減算と違って乗除算は2の補数表現に対応できないので、計算するときには正の数に直して計算して後で符号を調整します。 これはCPU内でのハードウェアでの計算でも同様です。
- okazaki0ko
- ベストアンサー率15% (37/238)
回答No.2
CPU(ALUと言うべき?)内ではどうやっているかわかりませんが、 私が16ビットCPU(最大レジスタビット長は32ビット)で64ビットの乗除算をしなければならなかったときは、 補数で正の数に戻して計算後、符号を判定(元の数の最上位ビットの排他的論理和)し、符号補正という方法でプログラムしました。>>アセンブリ言語で! 余談ですが、加減算はそのまま足し込めば正しく計算できますね。
noname#208124
回答No.1
計算後に補数を戻すのを忘れてませんか
質問者
補足
その記述は抜けてましたね。 失礼しました
お礼
ありがとうございます やはり、最上位ビットを見て、計算してるんですね。 何か、効率的な方法があるのかなぁって思ったんですが、 難しいようですね。 アセンブラも見てみます