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


von Checker (Gast)


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

von Wolfram (Gast)


Lesenswert?

Stichworte:
IEEE 754
C-ABI

von Falk (Gast)


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

von crazy horse (Gast)


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.

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.