2

バイナリ減算を解いていて、ある時点で動けなくなりました。小さい数から大きい数を引く方法がわかりません。

私のオペランドは 0.111000*2^-3 と 1.0000*2^-3 です。

小数部分を簡単に減算できましたが、MSB に来ると、それを行う方法がわかりません。操作を実行するには、どこから借りればよいですか。0 から 1 を引くには借用が必要であり、符号ビットが負になることはわかっています。しかし、ここでは、保管は問題ではありません。私の問題は、操作自体にあります。誰かが結果とそれを実行する方法を説明できますか??

ありがとう

4

2 に答える 2

2

非常に遅いですが、同じ質問があったので、同じ問題を抱えている他の人のためにこれをここに置いてください。

問題が分数部分だけにある場合は、次の方法を試すことができます。

  1.000
- 0.111
-------

ステップ 1: 加算できるように、両方の 2 進数の符号ビットを追加します。

 0 1.000
 1 0.111
 -------  +
 1 1.111

次に、反転して 1 を追加し、2 の補数から符号の大きさに変換します。

1 1.111 -> 0.001
于 2015-07-28T09:53:33.017 に答える
1

これはあなたを助けるかもしれない素晴らしい例です:

http://sandbox.mc.edu/~bennet/cs110/pm/sub.html

これをプログラムで行う場合は、減算を実行する前に、どちらが大きいかをごまかすことができます (これは私が行っていることです)。

于 2012-09-25T00:45:42.343 に答える