web-dev-qa-db-ja.com

正の数の2の補数表記は同じ数ですか?

正の数の2の補数表記は、その2進表現と同じですか?

11
yesraaj

正の数の2の補数表記は同じ数ですか?

良い例は wiki からです。256= 255 + 1であり、(255 − x)はxの1の補数であることに注意することで、2の補数との関係が実現されます。

0000 0111 = 72の補数は11111001 = -7です。

それが機能する方法は、msb(最上位ビット)が負の値を受け取るため、上記の場合

-7 = 1001 = -8 + 0+ 0+ 1

編集-2の補数表記で記述された正の数は、符号なし表記で記述された数と同じです(ただし、最上位ビットはゼロでなければなりません)。負の数は、絶対値のすべてのビットを反転し、結果に1を加算することにより、2の補数表記で書き込むことができます。 2の補数表記

Kビットの2の補数表記で表すことができる最大数は2 ^(k-1)-1です。

7
TStamper

一部の回答やコメントでは、「2の補数表記」と「2の補数」の関係が混乱しています。質問を少し明確にする必要があるかもしれませんが、それは明らかに「2の補数表記」について質問しています。

2の補数表記には、正の数と負の数の両方が含まれます。 2進数は多くのことを意味する可能性があるため、2進数が何を表すかを判断するには、最初にどの表記法またはエンコードが使用されているかを知る必要があります。 2進数は、符号なし整数、2の補数整数、IEEE浮動小数点数、文字列、またはその他の完全なものにすることができます。

したがって、2の補数表記の7は、符号なし整数と同じように00000111です。また、2の補数表記の-7は11111001です。

したがって、はい、2の補数表記の正の整数は、符号なし整数の場合と同じように表されます(使用されているビット数に対して有効な整数であると想定)。

9
Rob Pilkington

ここで何か混乱していると思います。正の整数は通常、単純な2進数として格納されます。 1は1、10は2、11は3などです。負の整数は格納されます絶対値の2の補数として、つまり対応する正の整数。正の数の2の補数は、この表記を使用する場合、負の数です。

数値の符号を反転するには、常にその数値の2の補数を計算します。すべてのビットを反転してから、1を加算します。これは、元の数値が正か負かには関係ありません。

例:8ビット符号付きバイナリ表記の3は00000011です。符号を反転するには、最初にすべてのビット(11111100)を反転し、次に1(11111101)を追加します。したがって、-3は11111101です。符号を再度反転するには、最初にすべてのビット(00000010)を反転し、次に1(00000011)を追加すると、これが同じ3であることがわかります。

9
Svante

私がコンピュータサイエンスのクラスで学んだことから、2の補数、1の補数、および符号付きの大きさは、正の整数値でのみ同じです。これは負の整数値とは異なります。1の補数の場合はビットを反転する必要があり、2の補数の場合は反転したビットを保持し、負のビットを絶対整数にするために1ビットを追加します。

私はまだ学んでいます、コンピュータサイエンスの1年生、それが役に立ったことを願っています。

6
sabeur

正の数の2の補数は同じ数ではなく、2の補数の形式でメモリに格納されません。正の数の場合はメモリにそのまま保存され、負の数の場合のみ2の補数形式で表されます。2の補数は減算に適しているため、負の数は2の補数形式で保存されます。例:5 + -7 = -2ここで、-7は2の補数形式(1001)で格納されます。 0101 + 1001 = 1110自動的に否定的な答えが返されることに注意してください

1
bajrangbali

これは本当です。負の数の表現に1を追加しないと、値が0と-0になりますが、これは少し無駄です。

0
Dmitry Brant