-4

signed integer8ビットを使用)---Range==> -128 to 127

そして、2の補数表現を考えると:

10000000 =128/(-0) [ Since its 2's Complement is 10000000 ]

つまり、ある意味ではnegativeゼロです。

signed整数の場合、128は1000 0000であり、2の補数もです。したがって、この表現を使用した[負の形式の]1000 0000コピーはありませんか?0それとも何かが足りないのですか?

タイプミスでごめんなさい。はい、範囲は -128 to 127です。

ただし、8ビットはメモリ内のこの数を表すことができます10000000。この数CANがメモリに保存されている場合、その値は何ですか?

4

6 に答える 6

8

いいえ、符号付き整数の値 10000000 は 128 ではなく、-128 です。最上位ビットは符号ビットとして使用されます。

于 2011-08-12T18:51:20.323 に答える
6

2's comp の 8 ビット数の範囲が -127 から 128 ではなく -128 から 127 であるという事実を見逃しています。また、2's comp がどのように機能するかを誤解しており、それを符号と大きさとして扱っています。

2 の comp サイクルは、最大値に達すると、符号ビットを見て、残りのビットを通常の値として見てから、2 つを組み合わせて単純に読み取ることはできません。それは符号と大きさです。例えば

  • 10000001 - これは-1ではなく-127 です
  • 10000010 - これは-2ではなく-126 です
  • 10000011 - これは-3ではなく-125 です

「しかし、8ビットはメモリ10000000でこの数値を表すことができます。この数値をメモリに格納できる場合、その値は何ですか?」

値は -128 です。

于 2011-08-12T18:51:15.710 に答える
2

「ある意味では負のゼロです。」

決して負のゼロではありません。x定義によるの 2 の補数は~x+1であり、 (8 ビット演算を想定して)は で~0+1あり0000 0000、 ではありません1000 0000。したがって、ゼロは負のゼロです。

あなたが言うように、 の 2 の補数は1000 0000です1000 0000。つまり、それはそれ自身の否定であるもう一方の値です。

符号なし 2 進表現では、1000 0000128 を表します。8 ビットの 2 の補数表現では、-128 を表します (これは、-127 が(~0111 1111)+1、つまりであるという事実と一致してい1000 0001ます)。128-128 の両方を表すことはできないため、どちらか一方でなければなりません。-128 を選択すると、最初のビットが常に1負の数と非負の数になるという優れた特性が0あり、したがって「符号ビット」と呼ぶことができます。

于 2011-08-12T18:55:53.763 に答える
1

範囲は-128127であり、~ではありません 。としてコード化されます。最上位ビットは符号ビットであるため、負であることに注意してください。の 2 の補数は確かに ですが、それは整数の範囲外であり、それで表すことはできません。-127128-1280b100000000b10000000-128128

整数が 16 ビットの場合、と-128で表されます。下位バイトは確かに同じですが、残りの整数は異なります。これは重要です!0b11111111100000001280b0000000010000000

128したがって、 、または-128は、えー... 不変の WRT 2 の補数であるというあなたの結論は間違っています。

于 2011-08-12T18:55:11.093 に答える
0

確かに、8 ビット パターンはまたは として10000000解釈できます。それは単なる合意の問題です。128-128

と解釈することに同意する128場合、8 ビット整数の場合の 2 の補数の範囲は になります-127..128

と解釈することに同意する-128場合、8 ビット整数の場合の 2 の補数の範囲は になります-128..127

標準の 2 の補数表現は、上位ビットが 1 であるすべての表現が常に10000000の数を表すことを知っておくと便利なため、として解釈することに同意します。したがって、実際には、符号付き 2 の補数表現の範囲は、常に負の値に向かってわずかに「シフト」されます。-128

PS「負のゼロ」がどこにあるのかは明確ではありません。2 の補数には負のゼロはありません。

于 2011-08-12T19:01:14.837 に答える
0

10000000 は (-0) ではありません。どの加算でも (-0) として機能しません。

例: 1 + (-0) = 0000 0001 + 1000 0000 = 1000 0001 = -127

于 2011-08-12T18:57:20.567 に答える