Конечные биты вместо произвольной точности
Вещественное число из формулы и его машинное представление — разные объекты. В двоичном floating point хранятся sign s, поле exponent E и целая fraction F. Для нормального числа с f дробными битами и смещением bias:
У FP32 поля имеют размеры1/8/23, bias127. В −192=−1.5×2⁷ получаем s=1,E=134,F=2²². Начальная единица нормальной significand не хранится отдельно. Источник H01 описывает поля и правила округления.
При E=0 правила другие: subnormal равен (−1)^s(F/2^f)2^(1−bias), без скрытой единицы. При F=0 это signed zero. Максимальное E зарезервировано для infinity и NaN: у infinity fraction0, у NaN она ненулевая. Поэтому «все битовые строки — обычные числа» неверно.
Эксперимент. Введите−192, затем−0, затем переключите формат. Отдельный редактор битов позволяет изменить sign/exponent/fraction и увидеть декодирование. Special values отображаются с объяснением; NaN не выдаётся за корректный результат последующего вычисления.
Граница. Вход сначала становится JavaScript Number (binary64). Codec округляет именно это значение в выбранный формат, а не точное произвольное десятичное рациональное число. Например,.1 уже не точно представимо вbinary64. Подпись формата не превращает все вычисления страницы вFP16.