2

2の補数表現を前提とした5桁の数値で表現できる最大値と最小値は?

5 桁の数字の最小値と最大値は 00000 ですが、最大値がわかりません。次に、2 の補数に変換しますか? これはばかげているように聞こえますが、私が思いつくことができるのはこれだけです...

私の最後の質問は、-EA(base16) と 24(base16) の間の値を 2 の補数形式を使用して格納すると仮定して、格納するために必要なプロセッサの最小レジスタ長はどれくらいですか?

この問題を攻撃する方法がわかりません。

どんな助けや説明も本当にありがたいです:)

4

2 に答える 2

5

2 の補数

N数字の 2 の補数の範囲は~です。−(2N − 1 − 1)+(2N - 1)

これは、数値の 2 の補数表現を取得するには、次のようにするためです。

  • 数値がゼロ以上の場合はそのままにしておきます。
  • すべてのビットを反転し、数値が 0 未満の場合は 1 を追加します。

したがって、最初のビット (MSB) は符号ビットになり、数値が負の場合は 1 になります。負の数を変換しようとしてゼロから始まる数になる場合 (または正の数を変換しようとして 1 から始まる数になる場合)、この数を格納するためにより多くのビットを取得する必要があります。ちゃんと。

それを念頭に置いて、Nが 5 に等しい場合:

最大

(25 - 1)= = =(24 - 1)16 - 115

最小

−(25 − 1 − 1)= = =−(24 − 1)−(16)-16

可能な最大数 (15) 10 = 01111 2を 1 つ追加すると、10000 2 = -16 になります。これが、可能な最大/最小値である理由です。

16 進数を 2 進数に 1 桁ずつ変換する:

-EA

-EA 16 = -(1110 1010) 2

この数値の長さが 8 ビットのみの場合

  • 最初のビットは符号ビットです。

2 の補数を取得するには、すべてのビットを反転して 1 を追加する必要があります。

-EA 16 = (0001 0101 +1) 2 = 0001 0110 2

そうすることで、取得した数値が正のように見えるため、符号を保存するためにもう 1 ビット必要であることがわかります。(この表現では、負の数は常に1 から始まります。この数が負であることはわかっていますが、0 から始まります)。

得られた数値を 10 進数に変換すると、正の値である 22 が得られます。この問題は、記号を表すビットを追加しなかったために発生しました。

追加の符号ビットを使用:

9 ビット長の場合

-EA 16 = -(0 1110 1010) 2 (1 0001 0101 +1) 2 = 1000 0110 2

したがって、その数値を格納するには 9 ビットが必要です。

24

24 16 = (0010 0100) 2

このように数値を適切に保存するには、7 ビット (6 ビット + 符号ビット) しか必要ありません。

レジスタ総ビット数

両方の数値を格納できるはずなので、9 ビットのレジスタが必要です。(最大数のサイズを取得する必要があります。そうしないと、切り捨てられて誤って表現されます。)

9ビットレジスタ

少し変わっていますが、9 ビット レジスタは次の範囲の数値を格納できます。

最大

(29 - 1)= = = = FF16(28 - 1)256 - 1255

最小

−(29 − 1 − 1)= = = = -100 16−(28 − 1)−(256)-256

ご覧-EA > -100のとおり24 < FF、数字を保存できます。

于 2015-01-23T18:42:12.450 に答える