Gleitkommadarstellung
-
Hallo,
kann mir jemand genau sagen, wie eine double-Zahl kodiert ist.
Mich interessiert dabei die genaue Anordnung der 64 Bit. Kommt als erstes das Vorzeichen, dann der Exponent und dann die Mantisse, oder wie?
Der Hintergrund ist derjenige, dass ich eine Funktion geschrieben habe, welche den Heximalwert einer double-Zahl ausgibt. Ich habe probeweise 20.0 eingegeben und habe als Ergebnis '00 00 00 00 00 00 34 40' erhalten und kann mir die Zusammensetzung nicht erklären.
Vielen Dank
Malte
-
Das ist auf allen Systemen unterschiedlich. Ich verschiebe dich mal nach Rund Um - sag dort dann bitte, fuer welches System (Prozessor) du das wissen willst.
-
Hallo,
ich habe Windows XP und einen AMD Duron
-
Hallo Malte,
Nach IEEE754 wird eine Double-Zahl mit
- 1 Bit Vorzeichen [63]
- 11 Bit Exponent [62-52]
- 52 Bit Mantisse [51-00] und
- Bias = 1023dargestellt.
Die Frage ist nur, wieherum man die Bits im Speicher interpretieren muß. Auf jedenfall ist das Betriebssystem unabhängig und soweit ich weiß bei allen x86 Prozessoren gleich. Wie genau weiß hoffentlich jemand anderes hier im Forum.
Gruss Neo
-
Wie Shade schon erwähnt hat, ist es systemabhängig, wie Gleitkommazahlen gespeichert sind. Vielleicht hilft die das hier.
Seit C99 gibt's auch die Format-Specifier "a und A" für printf(), um Fließkommawerte hexadezimal auszugeben.
-
http://www.nuvisionmiami.com/books/asm/files/chapt_17.pdf
enthält glaube ich einige Infos die dich interessieren dürften.ps:
Die Zahlen mit der die FPU arbeitet sin 80bit groß (long double)mfg
-bg-
-
Hallo,
wenn man den Speicher in der Reihenfolge "40 34 00 00 00 00 00 00" interpretiert
bekommt man als Ergebnis 20."40 34 00 00" Binär:
0100 0000 0011 0100 ...
0 = pos. Vorzeichen
100 0000 0011 = Exponent = 1027, da Bias = 1023 ist Exponent 1027-1024=4 also 2^4.
0100 ... = Mantisse ohne 1.vor dez. Punkt (Normalisierte Darstellung)
=> Mantisse ist eigentlich 1.0100...Ergebnis = 1.0100... *2^4 = 10100.000.. = 20 im Deziamlsystem
Oder?
MfG Neo
-
vielen Dank!!!
-
Vielleicht hilft dir auch dieser Link: http://developer.intel.com/design/intarch/techinfo/Pentium/fpu.htm