Heim  >  Artikel  >  Backend-Entwicklung  >  Binärzahlensystem – Arithmetischer Additionsüberlauf in C/C++?

Binärzahlensystem – Arithmetischer Additionsüberlauf in C/C++?

PHPz
PHPznach vorne
2023-08-26 22:33:011026Durchsuche

Das Komplementzahlensystem von

2 wird häufig in der Computerarchitektur verwendet.

Das N-Bit-2-Komplementzahlensystem kann Zahlen von -2n-1 bis 2n-1-1 darstellen.

4 Ziffern können Zahlen von (-8 bis 7) darstellen.

5 Ziffern können Zahlen von (-16 bis darstellen 15) Die Zahlen stehen im 2er-Komplementsystem.

Ein Überlauf tritt außerdem auf, wenn 2 N-Bit-Zweierkomplementzahlen angehängt werden und die Antwort zu groß ist, um in diese N-Bit-Gruppe zu passen.

Computer enthalten feste N-Bit-Register. Das Ergebnis der Addition zweier N-stelliger Zahlen ist die größte N+1-stellige Zahl.

Carry Flag speichert zusätzliche Bits. Aber ein Übertrag bedeutet nicht immer einen Überlauf.

Überlauferkennung

Wenn -

  • das Ergebnis der Addition zweier negativer Zahlen positiv ist oder

  • das Ergebnis der Addition zweier negativer Zahlen negativ ist.

Daher kann ein Überlauf erkannt werden, indem das höchstwertige Bit (MSB) beider Operanden und das Ergebnis überprüft werden. Anstatt jedoch einen 3-Bit-Komparator zu implementieren, kann ein Überlauf durch Überprüfen des Übertrags und des Übertragsausgangs vom MSB erkannt werden. Wir betrachten die N-Bit-Addition von Zweierkomplementzahlen.

二进制数系统 - C/C++中的算术加法溢出?

Überlauf tritt auf, wenn der Übertragseingang nicht mit dem Übertragsausgang übereinstimmt. Der obige Überlaufausdruck kann anhand der folgenden Analyse erläutert werden.

二进制数系统 - C/C++中的算术加法溢出?

Im ersten Bild sind die höchstwertigen Bits der beiden Zahlen 0, was darauf hinweist, dass es sich um positive Zahlen handelt. Wenn hier der Übertragseingang 1 ist, ist das höchstwertige Bit des Ergebnisses 1, was anzeigt, dass das Ergebnis negativ ist (Überlauf), und der Übertragsausgang ist 0. „Eintragen“ ist nicht gleich „Ausführen“, daher kommt es zu einem Überlauf.

Im zweiten Bild sind die höchstwertigen Bits der beiden Zahlen 1, was darauf hinweist, dass es sich um negative Zahlen handelt. Wenn hier der Übertragseingang 0 ist, ist das höchstwertige Bit des Ergebnisses 0, was anzeigt, dass das Ergebnis positiv ist (Überlauf), und der Übertragsausgang ist 1. „Eintragen“ ist nicht gleich „Ausführen“, daher kommt es zu einem Überlauf.

Daher reichen die Ein- und Austräge des MSB aus, um einen Überlauf zu erkennen.

二进制数系统 - C/C++中的算术加法溢出?

Das obige XOR-Gatter kann zur Erkennung eines Überlaufs verwendet werden.

Das obige ist der detaillierte Inhalt vonBinärzahlensystem – Arithmetischer Additionsüberlauf in C/C++?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen