Ich habe eine Standortinformation in HEX Zeichenfolge. Ich muss es in IEEE-754-Protokoll in Floating-Integer konvertieren.Wie Mantisse in Python zu berechnen, wenn der Exponent Hit auf -127
Also schrieb ich diesen Code Zeichen der Zahl zu finden, berechnen Exponenten und Mantisse aus binärer Darstellung der Hexadezimalzahl angegeben.
def _calculte_mantissa(bin_number):
val = 1
bit_count = -1
bit_length = 0
while bit_length <= 22:
print bit_count, bit_length
val += int(bin_number[bit_length]) * 2**bit_count
bit_count -= 1
bit_length += 1
print val
return val
def convert_position(pos):
bin_pos = format(int(pos, 16), "0>32b")
sign = (-1)**int(bin_pos[0], 2)
exponent = int(bin_pos[1:9], 2) - 127
mantissa = _calculte_mantissa(bin_pos[9:])
position = sign * 2**exponent * mantissa
return position
Das Problem ist; Wenn der Exponent kleiner als -126 ist, also -127, ist das Ergebnis nicht korrekt. Ich überprüfe das Ergebnis from this address, Zeichen und Exponent Ergebnisse sind korrekt, aber Mantisse Ergebnis ist anders als meins.
ich etwas über das fehle, was die Seite sagt:
Als Ergebnis weist der Mantisse einen Wert zwischen 1,0 und 2. Wenn der Exponent -127 (binär 00000000) erreicht, wird die führende 1 wird nicht mehr verwendet, um allmählichen Unterlauf zu ermöglichen.
Jede Art, wie ich das Problem kenne hier ist aber kann ich wegen meines unzureichend Englisch nicht herausgefunden.
ein wenig über IEEE754 Lesen und denormalized Werte. Dann werden Sie sehen, was Sie tun können. –