Forum: FPGA, VHDL & Co. Nächstgelegene Fixed-Point Zahl zu Floating-Pointzahl bekommen


von D. I. (Gast)


Lesenswert?

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)

von flint (Gast)


Lesenswert?

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

von DerAlbi (Gast)


Lesenswert?

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.)

von D. I. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.