Forum: PC-Programmierung IEEE754: Rundung und Exceptions


von Sven P. (Gast)


Lesenswert?

Hallo,

ich werd aus dem Standard nicht so recht schlau. Folgendes Situation:
Wenn ich zwei (noch normalisierte) Fließkommazahlen mit verschiedenen 
Exponenten addiere, muss die betragsmäßig kleinere von beiden ja 
denormalisiert werden (nach rechts schieben, Exponent erhöhen), bis die 
Exponenten übereinstimmen.

(Großbuchstaben = größere Zahl, die '1' vornean ist das implizite Bit)
1
Vorher:
2
1AAAAAAAABBBBBBBBCCCCCCCC          *2^EE
3
1aaaaaaaabbbbbbbbcccccccc          *2^ee  z.B. mit ee = EE-2
4
5
Nachher:
6
1AAAAAAAABBBBBBBBCCCCCCCC          *2^EE
7
001aaaaaaaabbbbbbbbcccccccc        *2^(ee+2)  ee+2 ist EE, also gleich
Nun kann addiert werden.

Dabei frage ich mich:
Die beiten letzten Bits der kleinen Zahl (die zwei überstehenden cc 
rechts), die gingen ja jetzt normalerweise verloren. Würde das schon zu 
einer /Inexact/-Ausnahme führen?

Und weiter: Zur Rundung schlägt der Standard vier Modi vor: nach +Inf, 
nach -Inf, zur nächsten darstellbaren Zahl und nach 0. Wie soll das 
funktionieren? Ich kann mir da auch nach umfangreicher Lektüre der 
Drafts zu IEEE754 und IEEE754R keinen Reim darauf machen.
Dort heißt es, die Rechnung sei so durchzuführen, als wären beide 
Operanden von unendlicher Genauigkeit -- klingt gut, aber wie soll das 
aussehen? Mehr Genauigkeit i.S.v. niederwertigeren Bits bekomme ich im 
Beispiel oben nur von der kleineren Nummer (die cc rechts), nur dort 
stimmen die Stellen der größeren Zahl ja schon nicht mehr (wären ja 
Null, so weit reicht die Mantisse ja nicht).

Bin dankbar für jeden Tipp!

Vielen Dank und Gruß,
Kama

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.