Ich stehe gerade aufm Schlauch: Wenn ich eine Zahl wie 0.78 hab, wie kann ich die nächstgelegene Fixed-Point-Zahl herbekommen? z.B. 0.78 => 0.75 = 0.11 (binär repräsentation)
Ich würde mit 2^(Anzahl Nachkommastellen) multiplizieren und dann binär wandeln. Dann muss man den Dezimalpunkt wieder richtig einsetzen aber das ist für HW ja egal. lg flint
indem du beim Zurückrechnen rundest. Das geht z.B. indem man: int i = round(floatZahl * (1<<FixGenauikeit)); i >>= FixGenauikeit; Ergibt: round(0.78*8 )= 6 (.24 abgeschnitten); 6 um 3 bit geschiftet ist: 0.110 Das ist die nächst liegende Zahl. 0.82 -> 0.82*8 = 6.56 -> 7; 7 um 3 bit geschiftet ist 0.111 also fixkommatechnisch 0.875 was näher dran ist als 0.75 (bei dieser Präzision.)
Danke euch, genau das habe ich gesucht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.