Konvertierung binary floating-point floating-point in hex
Ich habe zum Beispiel 0 100 1110
sign exponent mantisa
dies ist gleich 3.75
. Wie konvertieren Sie es in hexadezimale oder oktale form? Gesucht hab ich wirklich hart für ein paar Stunden. Bitte helfen Sie.
Könnten Sie mir helfen, hier 100
ist 4
1110
ist 7/8
keine Weise, die (7/8) * 2^4
ist 3.75
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Umwandeln, nur die bits, als wenn es eine ganze Zahl. Ignorieren Sie die Tatsache, dass es sich um einen floating-point-Zahl.
01001110
konvertiert4E
in hex, weil0100
ist4
und1110
istE
. (Beachten Sie, wie ich der Gruppe in Vieren.)Gleiche für oktal, wird es
116
, weil01
ist1
,001
ist1
und110
ist6
. (Beachten Sie, wie ich die Gruppe in Dreiergruppen, mit Ausnahme der ersten Gruppe.)4E
ist nicht von 3,75. Wie es zu konvertieren zurück zu den dezimal.Zeichen sollte klar sein.
Mantisse bedeutet 1 + 1/2*erste bit + 1/4*zweite bit + 1/8*Dritte bit... klingt das vertraut? Es ist im Grunde Binär zählen, außer es ist 'nach dem Komma'.
Exponent bedeutet, multiplizieren Sie die mantisa von 2^exponent. Aber wie kommst du auf die bits in
exponent
um welchen Wert es darstellt? Ich habe einige googeln und offenbar, wenn das oberste bit gesetzt ist und der rest sind0
(10, 100, 1000..., etc) dann haben Sie1
, wenn es101
Sie haben2
usw. Das heißt, wenn es011
Sie haben0
,010
Sie haben-1
und so weiter. Also in diesem Fall haben wir1
für exponent.So, in diesem Fall Sie berechnen möchten 1.875 (mantisa) *2^1 (2^exponent) und stellen Sie die positiven (Schild).
Lesen Sie mehr: http://en.wikipedia.org/wiki/Double-precision_floating-point_format (es ist für die double-precision-Größe, aber sollten alle Grundsätze "übernehmen", um jede Größe floating point)
EDIT: Hier eine bessere Erklärung über den Exponenten.
First off, in IEEE floating points, der kleinste und der größte Wert für den Exponenten eine Besondere Bedeutung haben - alle Nullen bedeutet 'dies ist ein null-oder subnormal number', alle diejenigen Mittel, "das ist die Unendlichkeit oder NaN'. So, wir haben zwar drei bits von exponent -
000
zu111
nur001
zu110
express normalen Exponenten - nur 6 Werte.Nun, etwas als 'exponent' bias wird verwendet, um das 1...6 Reichweite in negative und positive Werte - insbesondere möchten Sie ein -2...3-Bereich (mit der größte positive exponent > die Größe der größten negativen Exponenten, so dass Sie nicht bekommen können, überlauf-by-doing-1/
smallest normalized number
. Jedoch, 1/denormalized number
produzieren kannInfinity
.)Wir erhalten dies, indem Sie den Wert im Exponenten, und wenn es ist nicht ein besonderer Fall subtrahieren wir 3 aus dem binären Wert und nehmen diese als exponent Wert.
0 100 1110
ist daher0
-> positives Vorzeichen100
-> binäre Wert 4, subtrahieren 3, der exponent 11110
-> 1 + 7/8(1+7/8)*2^1 = 3.75
100
ist4
1110
ist7/8
keine Weise, die(7/8) * 2^4
ist3.75
.