Число одинарной точности: различия между версиями

[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Добавил пример использования/реализации предложенного шаблона на 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>
 
== Примеры чисел одинарной точности ==