mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Gleitkommazahl in 32Bit Hexcode ?!


Autor: Checker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


Ich hänge momentan an der Umwandlung einer Kommazahl
z.B. 1,2024 in ein 32Bit Hexcode

Also ich möchte diese 1,2024 nachträglich in das Information memory 
schreiben.. also manuell in den Hexcode.

Nur woher weiß ich was ich da hinschreiben soll :D Wie rechne ich das 
um, so dass der µC später weiß, dass es sich um die 1,2024 handelt.
Auslesen geht. Dafür hab ich scho ne Funktion geschrieben.. aber wie 
schreib ich manuell in welchem Format ins Informationmemory? :)


Hilfe :)

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stichworte:
IEEE 754
C-ABI

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
/*---------------------------------------------------------------------- 
------------------------------------

  convert four single chars in a floating-point IEEE 754.b

------------------------------------------------------------------------ 
----------------------------------*/

float HextoFloat(unsigned char d3, unsigned char d2, unsigned char d1, 
unsigned char d0)
{
   long hex;
   long *ptr;
   float wert;

   hex = d3<<24 | d2 <<16 | d1<<8 | d0;
   ptr = &hex;
   wert=*(float*)ptr;

   return wert;
}

/*---------------------------------------------------------------------- 
------------------------------------

  convert a floating-point IEEE 754.b into four single chars

------------------------------------------------------------------------ 
----------------------------------*/

void Float2Hex(float input, unsigned char *d3, unsigned char *d2, 
unsigned char *d1, unsigned char *d0)
{
   long hex;
   float *ptr;

   ptr = &input;
   hex = *(long*)ptr;
   *d0 = hex & 0xFF;
   *d1 = (hex >>8) & 0xFF;
   *d2 = (hex >>16) & 0xFF;
   *d3 = (hex >>24) & 0xFF;
}

Damit kannst du dir deine HEX Werte im Simulator ausrechnen. Und du 
musst dich nicht um die ekligen Details kümmern.

MfG
Falk

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe zwar keine Ahnung, wovon du sprichst, aber üblicherweise werden 
float-Zahlen nach IEEE abgespeichert.
In deinem könnte das 0x3e 0xe8 0x99 0x3f sein. Reihenfolge kann aber 
auch andersherum sein. Kommt auf deinen Prozessor und Compiler an.

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]
  • [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.