1

誰かが私の仕事を本当にすぐに再確認できるかどうか疑問に思っていました. -33 と -31 の 2 つの負の数が与えられた場合。それらを足し合わせると、2 の補数を使用した結果になります。

注: 操作には 6 ビットのワード長を使用する必要があります。


私の答え

これを行った後、-31 を 2 で 100001 と計算しました。また、-33 は 2 の補数で 011111 になるように計算しました。それらを合計すると 1000000 になりましたが、この数字は 7 桁なので、6 ビットの語長にバインドされているため、上位ビットを切り落としました。これにより、数値 000000 が得られます。これには符号ビット 0 が含まれており、偶数であることを意味します。ただし、2 つの負の値の合計は均等にならないため、明らかにオーバーフローです。したがって、000000 の 2 を取ります。これは単純に 000000 です。

バッファ オーバーフローが発生したため、答えは 0 になります。これは正しいと思いますか?ありがとう。:)

4

1 に答える 1

1

まず、-33 + (-31) を 0 にすることはできません。

-33 は 6 ビットの 2 の補数では表現できません。01 1111b+3110 進数なので、足すと 0 になります。

したがって、正解は次のようになります。-33 は 6 ビット表現では無効な数値であるため、結果はありません。

7 ビットの 2 の補数で-33 = 101 1111b

 110 0001
+101 1111
    =
1100 0000

これは -64 に等しいです。

于 2014-09-03T16:03:59.607 に答える