1

したがって、2の補数の2進表記を使用して-7と-7を足し合わせたいとしましょう。私はこれを試しました:

-7 -> -00000111 -> 11111001
  1 1 1 1 1 0 0 1
+ 1 1 1 1 1 0 0 1
__________________
1 0 0 0 0 0 0 1 0

しかし、余分な数字を削除すると、11110001=14ではなく00000010=2になります。何が間違っていたのでしょうか。

4

2 に答える 2

4

ラインのどこかで、キャリーフラグを失いました(そして失い続けました):

          +- Here, 1 + 1 = 0 and sets carry to 1
          |   (everything up to here isokay).
          v
  1 1 1 1 1 0 0 1
+ 1 1 1 1 1 0 0 1
__________________
1 1 1 1 1 0 0 1 0
| | | ^ ^
| | | | |
| | | | +- Here, 1 + 1 + carry(1) is 1, not 0.
| | | +--- Ditto.
| | +----- And again.
| +------- Now it's just getting tedious.
+--------- Lastly, here is the final carry, just discard.

否定11110010(ビットを反転して1を加算)すると00001110、間違いなく14(8 + 4 + 2)になります。

于 2013-01-30T03:55:45.507 に答える
1

あなたの数学は間違っています。位置5に1+1を追加すると、10になるので、1をキャリーします。次の列で、1 + 1 +キャリー、= 11 =1+キャリーを追加する必要があります。

これを考慮に入れると、1 1 1 1 0 0 1 0=-14になります。

于 2013-01-30T03:54:36.133 に答える