InhaltsverzeichnisKlicke auf den Link, um zur gewünschten Stelle zu navigieren
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
Sie haben einen Zähler, der nur bis zu einer bestimmten Zahl zählen kann. Zum Beispiel ein Taschenrechner, der maximal 999 anzeigt. Wenn Sie versuchen, 1 zu 999 hinzuzufügen, kann er 1000 nicht anzeigen - die Ziffern "überlaufen" (overflow) einfach und der Rechner zeigt etwas ganz anderes an, zum Beispiel 000.
In der Programmierung wird dieser Effekt integer overflow (Überlauf von Ganzzahlen) genannt.
Dies geschieht, wenn eine Zahl größer wird als der maximale Wert, den der gewählte Variablentyp speichern kann.
Wenn eine int-Variable beispielsweise Zahlen bis 2.147.483.647 speichern kann, wird das Hinzufügen von 1 ihren Wert… negativ machen!
Warum 2.147.483.647 die "Obergrenze" für eine 32-Bit-Zahl ist
Im Computer werden Zahlen in binärer Form gespeichert (d.h. als Folge von Nullen und Einsen).
"32-Bit" bedeutet, dass zur Speicherung einer Zahl 32 Zellen reserviert sind, und in jeder kann entweder 0 oder 1 sein.
Wenn die Zahl jedoch signed (mit Vorzeichen) ist, ist eine dieser Zellen für das Vorzeichen reserviert:
- 0 im ersten Bit — positive Zahl,
- 1 im ersten Bit — negative Zahl.
Das bedeutet, dass für den Betrag der Zahl nur 31 Bit verbleiben.
Maximalwert Wenn alle 31 Bits (außer dem Vorzeichen) mit Einsen gefüllt sind, erhalten wir die größte mögliche positive Zahl:
1111111111111111111111111111111 (31 Einsen)
Im Dezimalsystem entspricht dies genau 2.147.483.647. In hexadezimaler (hex) Form wird dies als 0x7FFFFFFF geschrieben:
- 7 — binär 0111 (d.h. Vorzeichen 0 + drei Einsen),
- F — binär 1111 (vier Einsen),
- und so weiter bis zum Ende.
Deshalb treten in Programmen manchmal sehr seltsame Fehler auf, und in der Geschichte gab es sogar ernsthafte Unfälle aufgrund von Überläufen. Es gibt sogar Memes wegen des integer overflow Fehlers, aber das ist nicht genau.
Dieser Beitrag hat noch keine Ergänzungen vom Autor.