12.01.2014 Aufrufe

2-up - ETH Zürich

2-up - ETH Zürich

2-up - ETH Zürich

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Arithmetischer Überlauf (2)<br />

• Hier kam es also zu einem „arithmetischen“ Überlauf<br />

• Durch die Multiplikation mit 2 entstand eine Zahl, die grösser ist als<br />

der bei int darstellbare Bereich (-2147483648 bis 2147483647), man<br />

läuft im Zahlenring in den anschliessenden negativen Bereich hinein<br />

• Dies könnte auch bei einem Eingabewert b 0 passieren!<br />

• Diesen Fehlertypus würde man gerne abfangen, aber:<br />

• “Despite the fact that overflow, underflow, or loss<br />

of information may occur, evaluation of a multiplication<br />

operator never throws a run-time exception.”<br />

• Man muss also selbst dafür sorgen, dass das Produkt<br />

aus a und b nicht grösser als 2147483647 wird<br />

• Denkübung: wie?<br />

61<br />

Nochmal zur „altägyptischen Multiplikation“<br />

• Beispiel 3 × 18:<br />

a<br />

3<br />

6<br />

12<br />

24<br />

48<br />

54<br />

b<br />

18<br />

9<br />

4<br />

2<br />

1<br />

Etwa<br />

log 2 b<br />

Zeilen<br />

1) Zeilen streichen, bei denen rechts eine gerade Zahl steht<br />

2) Übrige Zahlen der linken Spalte aufaddieren<br />

• Dieses Aufaddieren realisieren wir jetzt noch auf eine andere Art,<br />

indem wir schritthaltend „akkumulieren“<br />

62<br />

24

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!