Wie hat 0 zwei Werte im eigenen Komplement?

11

Es wird gesagt, dass im 2er-Komplement 0 nur einen Wert hat, während im 1er-Komplement sowohl +0 als auch -0 getrennte Werte haben. Was sind Sie?

user136782
quelle
7
0 hat keine zwei Werte. Es hat den Wert 0. Punkt. Was es nicht in 1-Komplement hat zwei Darstellungen . Aber das ist nicht wirklich etwas Einzigartiges. Zum Beispiel hat die Zahl 10 unendlich viele Darstellungen in Dezimalzahlen: 10, +10, 010, +010, 0010, +0010, ... und so weiter.
Jörg W Mittag
Genau. Die Werte sind nur Äquivalenzklassen der Darstellungen, und was als "Wert 0" bezeichnet wird, ist zufällig eine Äquivalenzklasse, die sowohl 000...0als als auch enthält 111...1. Diese beiden Darstellungen bilden jedoch immer noch nur einen einzigen Wert.
links um den

Antworten:

19

Im 1er-Komplement invertieren Sie einfach alle Bits.

Betrachten Sie diese 2 Beispiele (unter der Annahme von 8 Bits):

  • , also - 4 = 111110114=000001004=11111011

  • , also - 0 = 11111111 .0=000000000=11111111

Sie haben also zwei Möglichkeiten, die Zahl 0 darzustellen

Im 2er-Komplement addieren Sie 1 zur 1er-Komplementdarstellung der negativen Zahl

  • dass in 1's Komplement 11111011 war, wird 1111110041111101111111100
  • , das im 1er-Komplement 11111111 war, wird 00000000 gleich 001111111100000000

In diesem Fall haben Sie also nur eine Möglichkeit, die 0 darzustellen

Wie Sie den Beispielen entnehmen können, besteht der Unterschied darin, dass:

  • Im 1er-Komplement können Sie mit 8 Bits nur Zahlen von bis 2 7 - 1 (von -127 bis 127) ausdrücken.27+1271
  • Im 2er-Komplement mit 8 Bits können Sie Zahlen von bis 2 7 - 1 (von -128 bis 127) ausdrücken , also eine weitere Zahl27271
ABC
quelle
7
Es könnte erwähnenswert sein, dass das 2er-Komplement neben nur einer weiteren Zahl im Bereich weitere Vorteile bietet, auch wenn Sie nicht ins Detail gehen, was es ist.
KRyan
7
Könnte auch einen der genannten Vorteile in diesem Kommentarbereich erwähnen: Einer der Hauptvorteile ist, dass die Subtraktion (/ Addition negativer Zahlen) implementiert werden kann, indem einfach so getan wird, als wären die Zahlen nicht signiert, und sie hinzugefügt werden. Für die Subtraktion sind keine Sonderfälle erforderlich = viel einfachere Schaltung und Logik. Diese Seite enthält eine schöne Zusammenfassung zu diesem Thema.
Jason C
3

00110

David Richerby
quelle
Eine Ergänzung der Addition oder Subtraktion funktioniert mit End-Around-Carry. Was dem Programmierer angezeigt wird, muss natürlich nicht die zugrunde liegende Darstellung sein.
Zwei
1
@ttw Die Frage fragt, was die beiden Darstellungen von Null sind, daher bin ich mir nicht sicher, wo Addition, Subtraktion und Programmierer ins Spiel kommen.
David Richerby
3

Es ist irreführend, von zwei verschiedenen Werten von 0 im eigenen Komplement zu sprechen . Das Komplement von Eins (und das Komplement von Zwei) sind binäre Darstellungen von Zahlen. Sie beschreiben eine Möglichkeit, Zahlen in Binärform darzustellen und arithmetische Operationen mit ihnen durchzuführen. Die Zahl, die durch die Folge von Bits dargestellt wird, ist der Wert.

000=00

00011

Martijn
quelle