Число одинарной точности
Для улучшения этой статьи желательно?:
|
Число́ одина́рной то́чности (англ. single precision, single) — широко распространенный компьютерный формат представления вещественных чисел, занимающий в памяти 32 бита (4 байта). Как правило, под ним понимают формат числа с плавающей запятой стандарта IEEE 754.
Числа одинарной точности с плавающей запятой обеспечивают относительную точность 7-8 десятичных цифр в диапазоне от
до примерно
.
В современных компьютерах вычисления с числами с плавающей запятой поддерживаются аппаратным сопроцессором (FPU — англ. floating point unit). Однако во многих вычислительных архитектурах нет аппаратной поддержки чисел с плавающей запятой и тогда работа с ними осуществляется программно.
| Знак | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Порядок | Мантисса | |||||||||||||||||||||||||||||||
| 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | = 0,15625 |
| 31 | 24 | 23 | 16 | 15 | 8 | 7 | 0 | |||||||||||||||||||||||||
Для вычисления показателя степени из восьмиразрядного поля порядка вычитается смещение порядка равное 12710 = 7F16 = 011111112 (то есть, 011111002 - 011111112 = 12410 - 12710 = -310). Так как в нормализованной двоичной мантиссе целая часть всегда равна единице, то в поле мантиссы записывается только её дробная часть. Для вычисления мантиссы к единице добавляется дробная часть мантиссы из 23-х разрядного поля дробной части мантиссы 1,010000000000000000000002. Число равно произведению мантиссы со знаком на двойку в степени порядка = 1,012*210-310 = 1012*210-510 = 510*210-510 = 0,1562510.
Содержание
Общий шаблон для побитового доступа[править | править вики-текст]
union { float fl; uint32_t dw; } f; int s = ( f.dw >> 31 ) ? -1 : 1; /* Знак */ int e = ( f.dw >> 23 ) & 0xFF; /* Порядок */ int m = /* Мантисса */ e ? ( f.dw & 0x7FFFFF ) | 0x800000 : ( f.dw & 0x7FFFFF ) << 1; e -= 150;
Результирующая формула расчёта (число одинарной точности) будет s * m * 2 ^ e.
Примеры чисел одинарной точности[править | править вики-текст]
Эти примеры представлены в шестнадцатеричном виде чисел с плавающей запятой. Они включают знаковый бит, порядок и мантиссу.
3f80 0000 = 1
c000 0000 = −2
7f7f ffff ≈ 3.4028234 × 1038 (максимальное одинарной точности)
0000 0000 = 0
8000 0000 = −0
7f80 0000 = infinity
ff80 0000 = −infinity
3eaa aaab ≈ 1/3
По умолчанию, 1/3 округляется вверх, в отличие от чисел двойной точности.
См. также[править | править вики-текст]
Ссылки[править | править вики-текст]
- Онлайн IEEE754 калькулятор
- Онлайн преобразователь для IEEE 754 чисел с одинарной точностью
- Habrahabr. Что нужно знать про арифметику с плавающей запятой
| В этой статье не хватает ссылок на источники информации.
Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники. Эта отметка установлена 18 июня 2012. |

