2016-05-21 11 views
4

Im Buch, das ich es lese, sagt, dass:Signed Art Darstellung in C++

Der Standard definiert nicht, wie signierte Typen sind vertreten, aber nicht angibt, dass Bereich sollte gleichmäßig zwischen positiven und negativen Werten aufgeteilt werden. Daher ist ein 8-Bit-Zeichen mit Vorzeichen garantiert in der Lage, Werte von -127 bis 127 zu halten; modernsten Maschinen verwenden Darstellungen, die Werte von -128 bis 127.

erlauben nehme ich an, dass [-128; 127]! Bereich von method „Zweien-Komplement“, in der negative Zahl ist, A + 1 (zB genannt entsteht 0111 ist 7, und 1001 ist dann -7). Aber ich kann mir nicht vorstellen, warum die Werte bei einigen älteren (?) Maschinen [-127; 127] sind. Kann das jemand klären?

+0

[Ones Komplement] (https://en.wikipedia.org/wiki/Ones'_complement), offensichtlich. Mit -0 und +0. –

+0

@MrLister danke. –

+0

Und vergessen Sie nicht die etwas intuitivere [signed-Magnitude] (https://en.wikipedia.org/wiki/Signed_number_representations#Signed_magnitude_representation) Darstellung, bei der eines der Bits nur für das Zeichen verwendet wird. Ich bin mir nicht sicher, ob irgendeine Hardware es tatsächlich benutzt hat. –

Antwort

2

Sowohl das Komplement als auch die vorzeichenbehaftete Größe sind Darstellungen, die den Bereich [-127,127] mit einer 8-Bit-Zahl angeben. Beide haben eine unterschiedliche Darstellung für +0 und -0. Beide wurden von (meist) frühen Computersystemen verwendet.

Die vorzeichenbehaftete Magnitudenrepräsentation ist vielleicht die einfachste Darstellung für Menschen und wurde vermutlich aus dem gleichen Grund verwendet, aus dem die Menschen zunächst dezimale Computer anstelle von Binärrechnern erstellten.

Ich würde mir vorstellen, dass der einzige Grund, warum die Ergänzung jemals verwendet wurde, war, weil Zweierkomplement noch nicht von den Machern der frühen Computer berücksichtigt worden war. Dann später, wegen der Abwärtskompatibilität. Obwohl dies nur meine Vermutung ist, nehmen Sie es mit einem Körnchen Salz.

Weitere Informationen: https://en.wikipedia.org/wiki/Signed_number_representations

als leicht Zusammenhang factoid: In der IEEE-Gleitkomma-Darstellung, die signierte Exponent verwendet excess-K Repräsentation und der Bruchteil wird von vorzeichenbehafteten dargestellt.

+0

Oh Junge, du hast mich an die schlechten alten Zeiten von BCD erinnert. –

+0

Unterstützt das IBM System Z und P noch immer BCD? –

1

Es ist nicht wirklich -127 bis 127. Aber -127 bis -0 und 0 bis 127

Früher Prozessor zwei Methoden verwendet:

  1. Signed Größe: In diesem aa negative Antwort ist Form indem 1 auf das höchstwertige Bit gesetzt wird. So repräsentieren 10000000 und 00000000 beide 0

  2. One's Ergänzung: Nur nicht auf positive Zahl anwenden. Dies verursacht zwei Null-Darstellung: 11111111 und 00000000.

Auch Zweierkomplement ist fast so alt wie die anderen beiden. https://www.linuxvoice.com/edsac-dennis-wheeler-and-the-cambridge-connection/