Überlauf von Zahlen vermeiden
03.03.2008
Author: N43
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
+ 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:
Sei der Erste und teile uns Deine Meinung mit.
Kommentare