mikrocontroller.net

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


Autor: D. I. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: flint (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: DerAlbi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.)

Autor: D. I. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke euch, genau das habe ich gesucht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.