6

6ビットの1と2の補数表現を使用して、次の問題を解決しようとしています。

12 - 7 

今、私は最初にバイナリで12、バイナリで7を取ります。

12 = 001100 - 6 bit 
7 =  000111 - 6 bit

次に、2の補数のビットを反転して、1を追加しますか?

12 = 110011 ones complement 
     +    1
    -------
     001101

7  = 111000 ones complement 
    +     1
   ---------
      111001

次に、これら2つの補数を足し合わせます

 001101
+111001
-------
1000110 = overflow? discard the last digit?  If so I get 5

今、私が次のような番号を持っている場合

-15 + 2

次に、MSBがゼロの場合、符号の大きさを追加しますか?

お気に入り:

-15 = 001111 6 bit

ビットを反転する前に、ここの最後に1を追加しますか?

  = 101111
4

2 に答える 2

15

2の補数を使用して負の値を表すと、減算と加算が同じであるという利点があります。あなたの場合、あなたはと考えることができ12 - 7ます12 + (-7)。したがって、-7の2の補数表現を見つけて、それを+12に追加するだけで済みます。

12  001100
-7  111001   -- to get this, invert all bits of 7 (000111) and add 1
----------
 5 1000101

次に、キャリーを破棄し(オーバーフローを示します)、結果が得られます。000101これは、期待どおり5になります。

の例では-15 + 2、同じ手順に従って、-15の2の補数表現を取得します。

15  001111
    110000   -- inverted bits
    110001   -- add 1

次に、通常どおりに追加を行います。

-15  110001
  2  000010
-----------
res  110011

それがres実際に-13に等しいことを確認するには、それが負であることがわかります(MSBセット)。大きさについては、正に変換します(ビットを反転し、1を追加します)。

res  110011
     001100  -- inverted bits
     001101  -- add 1

したがって、マグニチュードは予想どおり13です。

于 2010-10-07T01:43:19.500 に答える
2

いいえ。2の補数のアルゴリズムは、負の値がどこにあるかに基づいて変更されません。

于 2010-10-07T01:24:11.150 に答える