Числа с плавающей точкой обычно нормализуются. Возьмем, к примеру, научную нотацию, так как большинство из нас изучали ее в школе. Вы всегда масштабируете показатель степени, поэтому перед десятичной запятой стоит ровно одна цифра. Например, вместо 123.456 вы пишете 1,23456x10 2 .
Плавающая точка на компьютере обычно обрабатывается (почти 1 ) одинаково: числа нормализуются, поэтому перед двоичной точкой стоит ровно одна цифра (двоичная точка, поскольку большинство работает в двоичном, а не в десятичном виде). Однако есть одно различие: в случае двоичного числа это означает, что цифра перед десятичной точкой должна быть 1
. Поскольку это всегда 1
, нет необходимости хранить этот бит. Чтобы сохранить немного памяти в каждом числе с плавающей запятой, этот бит 1
является неявным, а не сохраняется.
Как обычно, ситуация немного шире, чем эта. Основное отличие состоит в денормализованных числах. Рассмотрим, например, если вы делали научные записи, но вы могли использовать только экспоненты от -99 до +99. Если вы хотите сохранить число, например, 1,234 * 10 -102 , вы не сможете сделать это напрямую, поэтому, вероятно, оно будет округлено до 0.
Денормализованные числа дают вам возможность справиться с этим. Используя денормализованный номер, вы сохраните его как 0,001234 * 10 -99 . Предполагая (как это обычно бывает на компьютере), что число цифр для мантиссы и экспоненты ограничено, это теряет некоторую точность, но все же позволяет избежать потери всей точности и просто вызвать ее 0
.
1 Технически, есть различия, но они не имеют никакого значения для базового понимания.