Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

Binärüberlauf

Eine Einschränkung bei binären Zahlen mit Vorzeichen ist der Überlauf, bei dem die Antwort auf ein Additions- oder Subtraktionsproblem die Größe überschreitet, die mit der zugewiesenen Anzahl von Bits dargestellt werden kann. Denken Sie daran, dass die Position des Vorzeichenbits vom Anfang des Problems an festgelegt ist.

Beim letzten Beispielproblem haben wir fünf binäre Bits verwendet, um die Größe der Zahl darzustellen, und das ganz links stehende (sechste) Bit als negatives Gewicht oder Vorzeichenbit. Mit fünf Bits zur Darstellung der Größe haben wir einen Darstellungsbereich von 2 5 , oder zweiunddreißig ganzzahlige Schritte von 0 bis zum Maximum.

Das bedeutet, dass wir eine Zahl bis zu +3110 . darstellen können (0111112 ) oder so niedrig wie -3210 (1000002 ).

Einschränkungen des Sechs-Bit-Zahlenfelds

Wenn wir ein Additionsproblem mit zwei Binärzahlen aufstellen, wird das sechste Bit für das Vorzeichen verwendet und das Ergebnis überschreitet entweder +3110 oder kleiner als -3210 . ist , wird unsere Antwort falsch sein. Versuchen wir, 1710 . hinzuzufügen und 1910 um zu sehen, wie diese Überlaufbedingung für übermäßig positive Zahlen funktioniert:

Die Antwort (1001002 ), interpretiert mit dem sechsten Bit als -3210 Platz, ist tatsächlich gleich -2810 , nicht +3610 wie wir mit +1710 bekommen sollten und +1910 zusammengezählt! Dies ist offensichtlich nicht richtig. Was ist schief gelaufen?

Die Antwort liegt in den Beschränkungen des Sechs-Bit-Zahlenfeldes, in dem wir arbeiten. Seit der Größe der wahren und echten Summe (3610 ) den zulässigen Grenzwert für unser angegebenes Bitfeld überschreitet, haben wir einen Überlauffehler .

Einfach ausgedrückt, sechs Stellen ergeben nicht genügend Bits, um die richtige Summe darzustellen. Daher ist jede Zahl, die wir mit der Strategie des Verwerfens des ganz linken „Übertrags“-Bits erhalten, falsch.

Ein ähnlicher Fehler tritt auf, wenn wir zwei negative Zahlen addieren, um eine Summe zu erzeugen, die für unser 6-Bit-Binärfeld zu niedrig ist. Versuchen wir, -1710 . hinzuzufügen und -1910 zusammen, um zu sehen, wie das funktioniert (oder nicht funktioniert, je nachdem!):

Die (falsche) Antwort ist ein positiv achtundzwanzig. Die Tatsache, dass die reelle Summe von minus siebzehn und minus neunzehn zu niedrig war, um mit einem Fünf-Bit-Größenfeld und einem sechsten Vorzeichen-Bit richtig dargestellt zu werden, ist die Hauptursache für diese Schwierigkeit.

Verwenden des siebten Bits als Vorzeichenbit

Versuchen wir diese beiden Probleme noch einmal, außer dass wir diesmal das siebte Bit als Vorzeichenbit verwenden und die Verwendung von 6 Bits zur Darstellung der Größe zulassen:

Durch Verwendung von Bitfeldern, die ausreichend groß sind, um die Größe der Summen zu handhaben, kommen wir zu den richtigen Antworten. In diesen Beispielaufgaben konnten wir Überlauffehler erkennen, indem wir die Additionsaufgaben in Dezimalform ausführen und die Ergebnisse mit den binären Antworten vergleichen.

Zum Beispiel beim Hinzufügen von +1710 und +1910 Gemeinsam wussten wir, dass die Antwort angeblich war +3610 sein , also wenn die Binärsumme auf -2810 ausgecheckt wurde , wir wussten, dass etwas nicht stimmen musste. Obwohl dies eine gültige Methode zur Erkennung eines Überlaufs ist, ist sie nicht sehr effizient.

Schließlich besteht die ganze Idee der Komplementation darin, Binärzahlen zuverlässig addieren zu können und das Ergebnis nicht durch Addition derselben Zahlen in Dezimalform noch einmal überprüfen zu müssen! Dies gilt insbesondere für den Aufbau elektronischer Schaltungen zur Addition binärer Größen:Die Schaltung muss sich selbst auf Überlauf prüfen können, ohne dass ein Mensch beaufsichtigt wird, der die richtige Antwort bereits kennt.

Was wir brauchen, ist eine einfache Fehlererkennungsmethode, die keine zusätzliche Arithmetik erfordert. Die vielleicht eleganteste Lösung besteht darin, nach dem Zeichen zu suchen der Summe und vergleiche sie mit den Vorzeichen der addierten Zahlen.

Offensichtlich sollten zwei positive Zahlen zusammenaddiert ein positives Ergebnis ergeben und zwei negative Zahlen zusammenaddiert ein negatives Ergebnis ergeben. Beachten Sie, dass immer dann, wenn wir in den Beispielaufgaben eine Überlaufbedingung hatten, das Vorzeichen der Summe immer entgegengesetzt war der beiden hinzugefügten Zahlen:+1710 plus +1910 geben -2810 , oder -1710 plus -1910 +2810 . geben .

Allein durch die Überprüfung der Schilder können wir feststellen, dass etwas nicht stimmt. Aber was ist mit Fällen, in denen eine positive Zahl zu einer negativen Zahl addiert wird? Welches Vorzeichen sollte die Summe haben, damit sie richtig ist. Oder genauer, welches Vorzeichen der Summe würde notwendigerweise auf einen Überlauffehler hinweisen?

Die Antwort darauf ist ebenso elegant:Es wird nie ein Überlauffehler sein, wenn zwei Zahlen mit entgegengesetzten Vorzeichen addiert werden! Der Grund dafür wird offensichtlich, wenn man die Art des Überlaufs betrachtet. Ein Überlauf tritt auf, wenn die Größe einer Zahl den durch die Größe des Bitfelds zulässigen Bereich überschreitet.

Die Summe zweier gleichlautender Zahlen kann sehr wohl den Bereich des Bitfeldes dieser beiden Zahlen überschreiten, so dass in diesem Fall ein Überlauf möglich ist. Wenn jedoch eine positive Zahl zu einer negativen Zahl addiert wird, liegt die Summe immer näher an Null als eine der beiden addierten Zahlen:ihre Größe muss muss kleiner sein als die Größe einer der beiden ursprünglichen Zahlen, so dass ein Überlauf unmöglich ist.

Glücklicherweise lässt sich diese Technik der Überlauferkennung leicht in elektronische Schaltungen implementieren und ist ein Standardmerkmal in digitalen Addiererschaltungen:ein Thema für ein späteres Kapitel.

VERWANDTE ARBEITSBLÄTTER:


Industrietechnik

  1. Elektronik als Wissenschaft
  2. Einrichten eines Heimlabors
  3. Voltmeternutzung
  4. 3-Bit-Binärzähler
  5. Dezimal versus binäre Numerierung
  6. Oktale und hexadezimale Numerierung
  7. Binäre Subtraktion
  8. Was ist ein Überlaufrohr?
  9. Container-Builds für Arm auf x86
  10. Erste Schritte mit Go auf PLCnext