9

2 ' の補数を使用して、負の数をバイナリ形式で表しています

ケース 1 :番号 -5

2' 補数法によると:

5 をバイナリ形式に変換します。

00000101、次にビットを反転します

11111010、次に 1 を追加

00000001

=> 結果:11111011

これが正しいことを確認するために、10 進数に再計算します。

-128 + 64 + 32 + 16 + 8 + 2 + 1 = -5

ケース 2 : 番号 -240

同じ手順が実行されます。

11110000

00001111

00000001

00010000 => recalculate this I got 16, not -240

私は何かを誤解していますか?

4

3 に答える 3

12

問題は、240 を 8 ビットだけで表現しようとしていることです。8 ビットの符号付き数値の範囲は -128 ~ 127 です。

代わりに 9 ビットで表すと、正しい答えが得られることがわかります。

011110000 (240)

100001111 (flip the signs)
+
000000001 (1)

=

100010000

=

-256 + 16 = -240
于 2012-02-07T06:59:00.760 に答える
4

-240 が符号付きの場合、8 ビットで表現できないことを忘れましたか?

于 2012-02-07T06:57:16.023 に答える
3

8 ビットで表現できる最小の負の数は -128、つまり です10000000

2 の補数を使用する:

128 = 10000000
(フリップ) = 01111111
(1 を追加) = 10000000

N ビット (もちろん符号付き整数) で表現できる最小の負の数は常に- 2 ^ (N - 1)です。

于 2012-02-07T06:54:56.167 に答える