Frage

Ich beobachte einige große Vorträge von David Malan ( hier ), die über binäre wird. Er sprach über mit / ohne Vorzeichen, 1 Kompliment, und 2-Komplement-Darstellungen. Es gab eine Zugabe gemacht von 4 + (-3), die wie folgt ausgerichtet:

0100
1101 (flip 0011 to 1100, then add "1" to the end)
----
0001

Aber er schwenkte seine magischen Hände und warf das letzte wegtragen. Ich habe wikipedia Forschung einige Bit hat recht es nicht bekommen, kann mir jemand erklären, warum diese bestimmte Übertrag (in der 8er -> 16 Spalten)? Wurde fallen gelassen, aber er hielt den einen unmittelbar vor ihm

Danke!

War es hilfreich?

Lösung

Der letzte Übertrag wurde gelöscht, da es nicht in dem Zielraum paßt. Es wäre das fünfte Bit sein.

Wenn er die gleiche Addition durchgeführt hatte, aber mit zum Beispiel 8-Bit-Speicher, würde es so ausgesehen hat:

00000100
11111101
--------
00000001

In dieser Situation würden wir auch mit einem "ungenutzt" carry geklebt werden.

Wir behandeln müssen trägt auf diese Weise zusätzlich mit zwei Kompliment Arbeit richtig zu machen, aber das ist alles gut, denn dies ist die einfachste Art der Behandlung ist, führt, wenn Sie Lagerung begrenzt haben. Wie auch immer, wir bekommen das richtige Ergebnis, rechts:)


x86-Prozessoren Speicher eine solche zusätzliche Übertrag in das Carry-Flag (CF), die möglich ist, mit bestimmten Befehlen zu testen.

Andere Tipps

Ein Übertrag ist nicht das gleiche wie ein Überlauf

Im Beispiel haben Sie einen Übertrag aus dem MSB. Per Definition endet dieser Übertrag auf dem Boden. (Wenn es irgendwo war für ihn zu gehen, dann wäre es nicht aus dem MSB gewesen sein.)

Aber das Hinzufügen von zwei Zahlen mit unterschiedlichen Vorzeichen überlaufen kann nicht. Ein Überlauf kann nur dann geschehen, wenn zwei Zahlen mit dem gleichen Vorzeichen ein Ergebnis mit einem anderen Zeichen erzeugen.

Wenn Sie auf die linke Seite erweitern, indem mehr Ziffernpositionen hinzufügen, sehen Sie, dass der Übertrag rollt über in eine unendliche Anzahl von Bit-Positionen nach links, so dass Sie nie wirklich eine endgültigen Trag 1. So erhalten den Antwort positiv ist.

 ...000100
+...111101
----------
....000001

An einem gewissen Punkt haben Sie die Anzahl der Bits zu setzen, die Zahlen zu repräsentieren. Er wählte vier Bits. Jede Übertrag in das 5. Bit verloren. Aber das ist in Ordnung, weil er die Zahl in nur 4 Bits darzustellen entschieden.

Wenn er entschieden, 5 Bits zu verwenden, um die Zahlen darzustellen er das gleiche Ergebnis bekommen hätte.

Das ist das Schöne daran ... Ihr Ergebnis wird die gleiche Größe wie die Bedingungen, die Sie hinzufügen möchten. Also das fünfte Bit wird hinausgeworfen

In 2-Komplement verwenden Sie die Carry-Bit, um zu signalisieren, wenn ein Überlauf in der letzten Operation war.

Sie müssen die sehen LAST zwei Übertragsbits zu sehen, ob es Überlauf war. In Ihrem Beispiel wurden die letzten zwei Übertragsbits 11 was bedeutet, dass es keinen Überlauf war.

Wenn die letzten zwei Übertragsbits 11 oder 00 sind dann trat kein Überlauf. Wenn die letzten zwei Übertragsbits 10 oder 01 sind dann gab es Überlauf. Deshalb ist er manchmal über das Übertragsbit und ein anderes Mal sorgte er es ignoriert.

Die erste Zeile unten ist die Carry-Reihe. Die am weitesten links Bits in dieser Reihe werden verwendet, um festzustellen, ob es Überlauf war.

1100
 0100
 1101
 ----
 0001

Sieht aus wie ich ist nur 4 Bits verwendet, so dass es keine 16 der Spalte.

Wenn Sie wurden mehr als 4 Bits verwendet dann die -3 Darstellung wäre anders, und der Übertrag des Mathe noch das Ende hinausgeworfen würde. Zum Beispiel mit 6 Bits müßten Sie:

 000100
 111101
 ------
1000001

und da der Übertrag außerhalb des Bit-Bereich Ihrer Darstellung ist es weg, und Sie nur 000001 haben

Betrachten 25 + 15:

5 + 5 = 10, halten wir die 0 und lassen Sie die 1 gehen in die Zehn-Säule. Dann ist es 2 + 1 (+ 1) = 4. Daher ist das Ergebnis 40:)

Es ist die gleiche Sache mit Binärdateien. 0 + 1 = 1, 0 + 0 = 0, 1 + 1 = 10 => senden, um die 1, um die 8-Säule, 0 + 1 (+ 1) = 10 => die 1 in der nächsten Spalte senden - Hier ist der Überlauf und warum werfen wir nur die 1 entfernt.

Aus diesem Grunde 2er- Komplement so groß ist. Es ermöglicht Ihnen das Hinzufügen / subtrahieren wie Sie mit Basis 10 zu tun, weil Sie (ab) verwenden, um die Tatsache, dass das Vorzeichen-Bit das MSB, das seinen Betrieb den ganzen Weg zum Überlauf wird kaskadieren, wenn nessecary.

Hope machte ich mich verstanden. Ziemlich schwer, dies zu explan wenn Englisch nicht Muttersprache Sie:)

Wenn 2-Komplement-Addition durchgeführt wird, das einzige Mal, dass ein Übertrag auf ein Problem hinweist, wenn es ein Überlaufzustand -., Die nicht, wenn die zwei Operanden ein anderes Vorzeichen haben kann passieren,

Wenn sie das gleiche Vorzeichen haben, dann ist der Überlaufzustand, wenn die Vorzeichen-Bit ändert sich von den zwei Operanden, dh., Gibt es einen Übertrag in das höchstwertige Bit.

Wenn ich mich meinen Computer Architektur learnin dies oft auf Hardware-Ebene durch einen Flag erkannt wird, die eingestellt ist, wenn der Übertrag in das signifikanteste Bit ist andere als der Übertrag aus dem höchstwertigen Bit . Was nicht der Fall in Ihrem Beispiel ist (es gibt einen Übertrag in die msb sowie aus dem msb).

Eine einfache Möglichkeit, daran zu denken ist als „das Zeichen nicht zu ändern“. Wenn der Übertrag in das msb anders ist als das auszuführen, dann hat sich die Zeichen nicht ordnungsgemäß geändert.

Der Übertrag fällt gelassen wurde, weil es nichts war, die mit ihm getan werden könnte. Wenn es auf das Ergebnis wichtig ist, bedeutet dies, dass der Betrieb den Wertebereich überschwemmt, die im Ergebnis gespeichert werden könnten. In Assembler, gibt es in der Regel eine Anweisung, die für den Übertrag über das Ende des Ergebnisses testen können, und Sie können mit ihm dort explizit beschäftigen - zum Beispiel, sie in die nächsthöhere Teil eines Mehr Präzision Buchwert

.

Da Sie sprechen über 4-Bit-Darstellungen. Es ist unussual im Vergleich zu einer tatsächlichen Maschine, aber wenn wir für selbstverständlich nehmen waren, dass ein Computer 4 Bits in jedem Byte für einen Moment hat, dann haben wir die folgenden Eigenschaften: ein Byte Wraps bei 15 bis -15. Alles, was außerhalb dieses Bereichs kann nicht gespeichert werden. Außerdem, was würden Sie mit einem zusätzlichen fünften Bit über das Vorzeichenbit tun eigentlich?

Nun, da können wir aus dem täglichen Mathematik sehen, die 4 + (-3) = 1, was genau das ist, was du hast.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top