0

次のバイナリ減算で結果が得られる理由を理解するのが困難です。違う答えが返ってきます。x が 0.00011001100110011001100 になるように 0.1-x を計算しようとしています。答えは 0.00000000000000000000001100[1100]...(1100 が繰り返され続ける) となるはずです。

私は正しくやっていないのですか?

4

1 に答える 1

0

あなたの期待する答えは間違っていると思います。これが私の解決策です。読みやすいように、ビットをニブルにグループ化します。

  0.1000 0000 0000 0000 0000 0000 <- added zero to the rightmost to fill in the nybble
- 0.0001 1001 1001 1001 1001 1000 <- added zero to the rightmost to fill in the nybble
_________________________________

の 2 の補数を取得し0.0001 1001 1001 1001 1001 1000ます。

  1.1110 0110 0110 0110 0110 0111 (1's complement)
+ 0.0000 0000 0000 0000 0000 0001
_________________________________
  1.1110 0110 0110 0110 0110 1000 (2's complement)

に 2 の補数を追加し0.1ます。

  0.1000 0000 0000 0000 0000 0000
+ 1.1110 0110 0110 0110 0110 1000
_________________________________
 10.0110 0110 0110 0110 0110 1000

オーバーフローは です1ので無視してください。0.1より大きいため、最終的な答えが正の数であることを示しているだけです0.0001 1001 1001 1001 1001 1000。したがって、最終的な答えは0.011001100110011001101000です。

于 2014-01-29T11:29:29.423 に答える