Число одинарной точности: различия между версиями
[отпатрулированная версия] | [непроверенная версия] |
Содержимое удалено Содержимое добавлено
Zeddikus (обсуждение | вклад) |
Jettec1 (обсуждение | вклад) Добавил пример использования/реализации предложенного шаблона на Python |
||
Строка 75:
</source>
Результирующая формула расчёта (число одинарной точности) будет <code>s * m * (2 ^(e-127))</code>.
=== Примеры использования ===
==== Python ====
Конвертирует целочисленное представление числа с одинарной точностью (в виде четырех байт, младшие вначале) во встроенный тип действительных чисел Python'а.
<source lang="python">
def dw2float(dw_array):
assert (len(dw_array) == 4)
dw = int.from_bytes(dw_array, byteorder='little',signed=False)
s = -1 if (dw >> 31) == 1 \
else 1 # Знак
e = ( dw >> 23 ) & 0xFF; # Порядок
m = ((dw & 0x7FFFFF ) | 0x800000) if e != 0 \
else ((dw & 0x7FFFFF ) << 1) # Мантисса
m1 = m*(2**(-23)) # Мантисса в float
return s*m1*(2**(e-127))
</source>
Вывод программы:
<source>
In[1]: dw2float([0x00,0x00,0x20,0x3E])
Out[1]: 0.15625
In[2]: dw2float([0x00,0x00,0x20,0xBE])
Out[2]: -0.15625
</source>
== Примеры чисел одинарной точности ==
|