0はどのようにして1の補数で2つの値を持ちますか?


12

2の補数では0の値は1つだけであると言われていますが、1の補数では+0と-0の両方が別々の値を持っています。彼らは何ですか?


8
0には2つの値はありません。値は0です。期間。どのようなことがない 1の補数しているのは2つので表現。しかし、それは本当にユニークなものではありません。たとえば、数値10は10進数で無限に多くの表現を持っています:10、+ 10、010、+ 010、0010、+ 0010、…など。
イェルクWミッターク

丁度。値があるだけで等価クラス表現の、そして何が「値0」と呼ばれています両方を含む等価クラスであることを起こる000...0111...1。しかし、これらの2つの表現は、依然として単一の値のみを構成しています。
leftaround約

回答:


19

1の補数あなただけのすべてのビットを反転させます。

次の2つの例を検討してください(8ビットを想定)。

  • 4=000001004=11111011

  • 0=000000000=11111111

したがって、数値0を表すには2つの方法があります

では2の補数あなたは負の数の1の補数表現に1を追加します

  • 41111101111111100
  • 01111111100000000

したがって、この場合、0を表す方法は1つだけです

例からわかるように、違いは次のとおりです。

  • 1の補数で、8ビットを使用すると、数を表すことができます27+1271
  • 27271

7
2の補数は、範囲を1つ増やすだけでなく 2の補数の方がより多くの利点があること言及する価値があります。
KRyan 2017

7
このここのコメントセクションで、利点の1つに言及するかもしれません。主な利点の1つは、減算(/負の数値の加算)が、符号なしのふりをして加算するだけで実装できることです。減算に特別なケースは必要ありません=はるかに単純な回路とロジック。このページには、そのトピックに関する素晴らしい記事があります。
Jason C

3

00110


1つは、アラウンドアラウンドキャリーで加算または減算を補完します。もちろん、プログラマーに表示されるものは、基礎となる表現である必要はありません。
twtw 2017

1
@ttw質問はゼロの2つの表現が何であるかを尋ねるので、足し算、引き算、プログラマーがどこに入るのかわかりません。
David Richerby 2017

3

1の補数で0 の2つの異なるといえば、誤解を招く可能性があります。1の補数(および2の補数)は、数値のバイナリ表現です。これらは、数値を2進数で表す方法と、それらを算術演算する方法を説明しています。ビットのシーケンスで表される数が値です。

000=00

00011

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.