02-07-2023
Число́ одина́рной то́чности (англ. Single precision, Single) — компьютерный формат представления чисел, занимающий в памяти одну ячейку (компьютерное слово; в случае 32-битного компьютера — 32 бита или 4 байта). Как правило, обозначает формат числа с плавающей точкой стандарта IEEE 754.
Числа одинарной точности с плавающей точкой обеспечивают относительную точность 7-8 десятичных цифр и масштабы в диапазоне от 10^−38 до примерно 10^38
Числа одинарной/двойной/расширенной точности (32, 64 и 80 бит) поддерживаются на аппаратном уровне сопроцессором (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; DWORD dw; } f; int s = ( f.dw >> 31) ? -1 : 1; int e = ( f.dw >> 23) & 0xff; int m = ( e == 0) ? ( f.dw & 0x7fffff) << 1 : ( f.dw & 0x7fffff) | 0x800000; e = (e - 127);
Результирующая формула расчёта будет s * m * 2 ^ e.
Число одинарной точности.