Überlauf von Zahlen vermeiden

03.03.2008

Beim Entwickeln von Anwendungen ist man meist vor Überläufen (von Zahlen) nicht geschützt.

Bei einem Überlauf reichen die zur Verfügung stehenden Bits nicht aus. Stehen einem z.B. 4 Bit zur Verfügung und man möchte 11 und 12 addieren, so geschieht folgendes:

Code:
  11 =   1 0 1 1
+ 12 =   1 1 0 0
--------------------
= 23 = 1|0 1 1 1

Die Zahl 23 benötigt 5 Bit, weshalb die vorderste 1 abgeschnitten wird und 0111 = 7 als Ergebnis herauskommt.

Um dies abzufangen muss man vor der Addition prüfen, ob ein Überlauf passieren wird.

Generell erfolgt dies mit a + b > MAX, führt man dies aber aus wird die Abfrage nie false liefern, da der Überlauf bereits vor dem Vergleich auftritt.

Stellt man die Ungleichung um zu a > MAX - b, so gibt es keinen Überlauf, wenn b positiv ist. Ist b negativ tritt auf jeden Fall ein Überlauf ein.

Man muss also den verschieden Fällen entsprechend die Ungleichung umstellen.

Deine Meinung ist gefragt:


Es wurden noch keine Kommentare geposted.

Sei der Erste und teile uns Deine Meinung mit.

Einen neuen Kommentar erstellen...