Число с плавающей запятой состоит из:
Нормальной формой числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) находится на полуинтервале [0; 1). Число с плавающей запятой, находящееся не в нормальной форме теряет точность по сравнению с нормальной формой. Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать в 4 формах — 0,0001 * 100, 0,001 * 10-1, 0,01 * 10-2, 0,1 * 10-3), поэтому распространена (особенно в информатике) также другая форма, в которой мантисса принимает значения от 1 (включительно) до 10 (не включительно).
В вычислительных машинах показатель степени принято отделять от мантиссы буквой «E» (exponent). Например, число 1,528535047 × 10-25 в большинстве языков программирования высокого уровня записывается как 1.528535047E-25.
Существует несколько способов того, как строки из цифр могут представлять числа:
Запись числа в форме с плавающей запятой позволяет производить вычисления над широким диапазоном величин, сочетая фиксированное количество разрядов и точность. Например, в десятичной системе предоставления чисел с плавающей запятой (3 разряда) операцию умножения, которую мы бы записали как
в нормальной форме представляется в виде
В формате с фиксированной запятой мы бы получили вынужденное округление
Мы потеряли крайний правый разряд числа, так как данный формат не позволяет запятой «плавать» по записи числа.
Диапазон чисел, которые можно записать данным способом, зависит от количества бит, отведённых для представления мантиссы и показателя. На обычной 32-битной вычислительной машине, использующей двойную точность (64 бита), мантисса составляет 52 бита + 1 знаковый, показатель — 11 бит. Таким образом получаем диапазон точности примерно от 4,94 × 10 −324 до 1.79 × 10308 (от 2−52 × 2−1022 до ~1 × 21024). Пара значений показателя зарезервирована для обеспечения возможности представления специальных чисел. К ним относятся значения бесконечность), получающихся в результате операций типа деления на ноль нуля, положительных и отрицательных чисел. Также сюда попадают денормализованные числа, у которых мантисса меньше единицы. В специализированных устройствах (например GPU) поддержка специальных чисел часто отсутствует. Существуют программные пакеты, в которых объём памяти выделенный под мантиссу и показатель задаётся программно, и ограничивается лишь объёмом доступной памяти ЭВМ.
Число с плавающей запятой состоит из:
Нормальной формой числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) находится на полуинтервале [0; 1). Число с плавающей запятой, находящееся не в нормальной форме теряет точность по сравнению с нормальной формой. Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать в 4 формах — 0,0001 * 100, 0,001 * 10-1, 0,01 * 10-2, 0,1 * 10-3), поэтому распространена (особенно в информатике) также другая форма, в которой мантисса принимает значения от 1 (включительно) до 10 (не включительно). В такой форме любое число (кроме 0) записывается единственным образом. Недостаток заключается в том, что в таком виде невозможно представить 0, поэтому представление чисел в информатике предусматривает специальный признак (бит) для числа 0.
В вычислительных машинах показатель степени принято отделять от мантиссы буквой «E» (exponent). Например, число 1,528535047 × 10-25 в большинстве языков программирования высокого уровня записывается как 1.528535047E-25.
Существует несколько способов того, как строки из цифр могут представлять числа:
Запись числа в форме с плавающей запятой позволяет производить вычисления над широким диапазоном величин, сочетая фиксированное количество разрядов и точность. Например, в десятичной системе предоставления чисел с плавающей запятой (3 разряда) операцию умножения, которую мы бы записали как
в нормальной форме представляется в виде
В формате с фиксированной запятой мы бы получили вынужденное округление
Мы потеряли крайний правый разряд числа, так как данный формат не позволяет запятой «плавать» по записи числа.
Диапазон чисел, которые можно записать данным способом, зависит от количества бит, отведённых для представления мантиссы и показателя. На обычной 32-битной вычислительной машине, использующей двойную точность (64 бита), мантисса составляет 52 бита + 1 знаковый, показатель — 11 бит. Таким образом получаем диапазон точности примерно от 4,94 × 10−324 до 1.79 × 10308 (от 2−52 × 2−1022 до ~1 × 21024). Пара значений показателя зарезервирована для обеспечения возможности представления специальных чисел. К ним относятся значения бесконечность), получающихся в результате операций типа деления на ноль нуля, положительных и отрицательных чисел. Также сюда попадают денормализованные числа, у которых мантисса меньше единицы. В специализированных устройствах (например GPU) поддержка специальных чисел часто отсутствует. Существуют программные пакеты, в которых объём памяти выделенный под мантиссу и показатель задаётся программно, и ограничивается лишь объёмом доступной памяти ЭВМ.
Есть сообщения о представлении формата с плавающей запятой. Цель этой статьи — дать краткое введение в формат с плавающей запятой.
Следующее описание объясняет терминологию и основные сведения о двоичном представлении с плавающей запятой IEEE 754. Обсуждение ограничивается форматами с одинарной и двойной точностью.
Обычно вещественное число в двоичном формате представляется в следующем формате:
I M I M-1 … I 2 I 1 I 0 .F 1 F 2 … F N F N-1
Где I . m и F n будут равны 0 или 1 целых и дробных частей соответственно.
Конечное число также может быть представлено четырьмя целыми компонентами: знаком (s), основанием (b), значащим (m) и показателем степени (e). Затем числовое значение числа оценивается как
(-1) с x m x b e ________ Где m < |b|
В зависимости от базы и количества битов, используемых для кодирования различных компонентов, стандарт IEEE 754 определяет пять основных форматов. Среди пяти форматов форматы binary32 и binary64 являются форматами с одинарной и двойной точностью соответственно, в которых основание равно 2.0052 Exponent
Формат одинарной точности:
Как указано в таблице 1, формат одинарной точности имеет 23 бита для значащих (1 представляет подразумеваемый бит, подробности ниже), 8 бит для экспоненты и 1 бит для знака.
Например, рациональное число 9÷2 можно преобразовать в формат с плавающей запятой одинарной точности следующим образом: )
Результат считается нормализованным , если он представлен с начальным 1 битом, то есть 1. 001 (2) x 2 2 . (Точно так же, когда число 0,000000001101 (2) x 2 3 нормализовано, оно выглядит как 1,101 (2) x 2 -6 ). Опуская эту подразумеваемую 1 слева, мы получаем мантисса числа с плавающей запятой. Нормализованное число обеспечивает большую точность, чем соответствующее денормализованное число . Подразумеваемый старший бит может использоваться для представления еще более точного значимого (23 + 1 = 24 бита), что называется субнормальным представлением. Числа с плавающей запятой должны быть представлены в нормализованной форме .
Субнормальные числа относятся к категории денормализованных чисел. Субнормальное представление немного уменьшает диапазон экспоненты и не может быть нормализовано, так как это приведет к экспоненте, которая не помещается в поле. Субнормальные числа менее точны, т. е. в них меньше места для ненулевых битов в поле дроби, чем в нормализованных числах. Действительно, точность падает по мере уменьшения размера субнормального числа. Однако субнормальное представление полезно для заполнения пропусков шкалы с плавающей запятой, близкой к нулю.
Другими словами, приведенный выше результат можно записать как (-1) 0 x 1,001 (2) x 2 2 , что дает целые компоненты как s = 0, b = 2, значащие (m) = 1,001, мантисса = 001 и e = 2. Соответствующее плавающее число одинарной точности может быть представлено в двоичном виде, как показано ниже:
Где поле экспоненты должно быть равно 2, но закодировано как 129 (127+2). ) называется смещенной экспонентой . Поле экспоненты представлено в простом двоичном формате, который также представляет отрицательные экспоненты с кодировкой (например, величина знака, дополнение до 1, дополнение до 2 и т. д.). Смещенный показатель используется для представления отрицательных показателей. Смещенная экспонента имеет преимущества перед другими отрицательными представлениями при выполнении побитового сравнения двух чисел с плавающей запятой на равенство.
A смещение of (2 n-1 – 1), где n — количество битов, используемых в показателе степени, добавляется к показателю степени (e), чтобы получить смещенный показатель степени ( E ). Таким образом, смещенный показатель степени ( E ) числа одинарной точности может быть получен как
E = e + 127
Диапазон показателя степени в формате одинарной точности составляет от -128 до +127. Другие значения используются для специальных символов.
Примечание. Когда мы распаковываем число с плавающей запятой, полученный показатель степени является смещенным показателем. Вычитая 127 из смещенного показателя, мы можем получить несмещенный показатель.
Формат двойной точности:
Как указано в таблице 1, формат двойной точности имеет 52 бита для значащих (1 представляет подразумеваемый бит), 11 бит для экспоненты и 1 бит для знака. Все остальные определения одинаковы для формата двойной точности, за исключением размера различных компонентов.
Точность:
Наименьшее изменение, которое может быть представлено в представлении с плавающей запятой, называется точностью. Дробная часть нормализованного числа с одинарной точностью имеет разрешение ровно 23 бита (24 бита с подразумеваемым битом). Это соответствует log (10) (2 23 ) = 6,924 = 7 (характеристика логарифма) десятичных знаков точности. Точно так же в случае чисел двойной точности точность составляет log (10) (2 52 ) = 15,654 = 16 десятичных цифр.
Точность:
Точность в представлении с плавающей запятой определяется количеством значащих битов, тогда как диапазон ограничен показателем степени. Не все действительные числа могут быть точно представлены в формате с плавающей запятой. Для любого числа, которое не является числом с плавающей запятой, есть два варианта приближения с плавающей запятой, скажем, ближайшее число с плавающей запятой меньше x как x_ и ближайшее число с плавающей запятой больше х как х+. Операция округления выполняется для количества значащих битов в поле мантиссы на основе выбранного режима. Режим с округлением вниз приводит к тому, что x устанавливается в x_, округляется в сторону увеличения, режим приводит к тому, что x присваивается к x+, округляется к нулю, режим приводит к тому, что x равен либо x_, либо x+, в зависимости от того, что находится между нулем и. Округление до ближайшего режима устанавливает x в x_ или x+, в зависимости от того, что ближе к x. Обычно раунд до ближайшего является наиболее часто используемым режимом. Близость представления с плавающей запятой к фактическому значению называется точностью .
Специальные битовые шаблоны:
Стандарт определяет несколько специальных битовых шаблонов с плавающей запятой. Ноль не может иметь старший значащий 1 бит, поэтому его нельзя нормализовать. Скрытое битовое представление требует специальной техники хранения нуля. У нас будет два разных битовых шаблона +0 и -0 для одного и того же числового значения ноль. Для представления с плавающей запятой одинарной точности эти шаблоны приведены ниже:
0 00000000 00000000000000000000000 = +0
1 00000000 0000000000000000000000000 = -0
Аналогично, стандарт представляет два разных битовых шаблона для +INF и -INF. То же самое приведено ниже,
0 11111111111110000000000000000000 = +Inf
1 1111111111110000000000000000000 = -INF
Все эти специальные номера, а также другие специальные номера (ниже) являются субнормальными номерами, представленные через использование специальных номеров, а также другие специальные номера (ниже) представлены через использование специальных номеров, а также другие специальные цифры (ниже), представленные через использование специальных номеров, а также другие специальные цифры (ниже), представленные через использование специальных номеров, а также другие специальные цифры (ниже), представленные через использование специальных номеров, а также другие специальные цифры (ниже) -это битовый шаблон в поле экспоненты. Это немного уменьшает диапазон экспоненты, но это вполне приемлемо, поскольку диапазон очень велик.
Попытка вычислить такие выражения, как 0 x INF, 0 ÷ INF и т. д., не имеет математического смысла. Стандарт называет результат таких выражений Not a Number (NaN). Любое последующее выражение с NaN дает NaN. Представление NaN имеет ненулевое значение и все единицы в поле экспоненты. Они показаны ниже для формата с одинарной точностью (x — неважные биты):
x 1111111 1 m 00000000000000000000000
Где m может быть двумя разными представлениями Na.
0 11111111 11000000000000000000000000 _____________ сигнализация NAN (SNAN)
0 1111111111111000000000000000000000 _____________QUIET NAN (QNAN)
Обычно QNAN и SNAN используются для обработки ошибок. QNaN не вызывает никаких исключений, поскольку они распространяются через большинство операций. Принимая во внимание, что SNaN, которые при использовании большинства операций вызывают недопустимое исключение.
Переполнение и недополнение:
Переполнение происходит, когда истинный результат арифметической операции конечен, но больше по величине, чем наибольшее число с плавающей запятой, которое может быть сохранено с заданной точностью. Опустошение происходит, когда истинный результат арифметической операции меньше по величине (бесконечно мал), чем наименьшее нормализованное число с плавающей запятой, которое может быть сохранено. Переполнение нельзя игнорировать в расчетах, тогда как недополнение можно эффективно заменить нулем.
Порядок байтов:
Стандарт IEEE 754 определяет двоичный формат с плавающей запятой. Детали архитектуры оставлены производителям оборудования. Порядок хранения отдельных байтов в двоичных числах с плавающей запятой варьируется от архитектуры к архитектуре.
Спасибо Venki за написание вышеуказанной статьи. Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.
Числа с фиксированной точкой ограничены тем, что они не могут одновременно представлять очень большие или очень маленькие числа, используя разумный размер слова. Это ограничение можно обойти, используя научная нотация. С экспоненциальной записью вы можете динамически размещать двоичную точку в удобное местоположение и использовать возможности двоичного кода, чтобы отслеживать это местоположение. Таким образом, вы может представлять диапазон очень больших и очень маленьких чисел, состоящих всего из нескольких цифр.
Любое двоичное число с плавающей запятой можно представить в экспоненциальной форме как f 2 e , где f — дробь (или мантисса), 2
— основание или основание (в данном случае двоичное), а e является показателем системы счисления. Основание всегда положительное число, а f и e могут быть положительными или отрицательными.
При выполнении арифметических операций оборудование для операций с плавающей запятой должно учитывать что знак, показатель степени и дробь закодированы в одном двоичном слове. Этот приводит к сложным логическим схемам по сравнению со схемами для двоичной фиксированной точки. операции.
Программное обеспечение Fixed-Point Designer™ поддерживает половинную, одинарную и двойную точность. числа с плавающей запятой, как определено стандартом IEEE ® 754.
Существует прямая аналогия между научным представлением и представлением системы счисления с запятой. Для Например, научная запись с использованием пяти десятичных цифр для дроби займет форма
±d.dddd×10p=±ddddd.0×10p−4=±0.ddddd×10p+1,
, где d=0,…,9и p является целым числом неограниченного диапазона.
Система счисления счисления с использованием пяти битов для дроби такая же, за исключением числа base
±b.bbbb×2q=±bbbb.0×2q−4=±0.bbbb×2q+1,
, где b=0,1 и q — целое число неограниченного диапазона.
Для чисел с фиксированной точкой показатель степени фиксирован, но нет причин, по которым двоичный код точка должна быть граничной с дробью. Дополнительные сведения см. в разделе Интерпретация бинарных точек.
Стандарт IEEE 754 получил широкое распространение и используется практически во всех процессоры с плавающей запятой и арифметические сопроцессоры, за заметным исключением многих Процессоры DSP с плавающей запятой.
Этот стандарт определяет несколько форматов чисел с плавающей запятой, из которых одиночные и двойные являются наиболее широко используемыми. Каждый формат содержит три компонента: знаковый бит, поле дроби и поле экспоненты.
Числа с плавающей запятой IEEE используют представление знак/величина, где знаковый бит явно входит в слово. Используя представление знака/величины, бит знака равен 0 представляет положительное число, а знаковый бит 1 представляет отрицательное число. Это в в отличие от двух дополнительных представлений, предпочтительных для фиксированной точки со знаком числа.
Числа с плавающей запятой могут быть представлены разными способами путем сдвига число слева или справа от двоичной точки и уменьшение или увеличение степени бинарника на соответствующую сумму.
Для упрощения операций с числами с плавающей запятой они нормализованы в формат IEEE. Нормализованное двоичное число имеет дробь вида 1. f , где f имеет фиксированный размер для данного типа данных. Поскольку крайний левый бит дроби всегда равен 1, нет необходимости хранить этот бит, и он поэтому является неявным (или скрытым). Таким образом, дробь n бит хранит число n +1 бит. Формат IEEE также поддерживает денормализованные числа, дробь которых имеет вид 0,9.0318 ф .
В формате IEEE представление экспоненты смещено. Это означает фиксированное значение,
смещения, вычитается из поля экспоненты, чтобы получить истинное значение экспоненты. Например,
если поле экспоненты 8 бит, то представлены числа от 0 до 255, и там
является смещением 127. Обратите внимание, что некоторые значения экспоненты зарезервированы для пометки Inf
(бесконечность), NaN
(не число) и
денормализованные числа, поэтому истинные значения экспоненты находятся в диапазоне от -126 до 127. См. Inf и
NaN
Чтобы получить больше информации.
Формат IEEE с плавающей запятой двойной точности представляет собой 64-битное слово, разделенное на 1-битное индикатор знака s , 11-битная смещенная экспонента e , и 52-битная дробь f .
Связь между форматом двойной точности и представлением вещественных числа задаются как
значение = {(−1)s(2e−1023)(1.f)нормализованное, 0
Дополнительную информацию см. в разделе Исключительная арифметика.
Формат IEEE с плавающей запятой одинарной точности представляет собой 32-битное слово, разделенное на 1-битное индикатор знака s , 8-битная экспонента со смещением e и 23-битная дробь f .
Взаимосвязь между форматом одинарной точности и представлением вещественных числа задаются как
value={(−1)s(2e−127)(1.f)нормализованный, 0
Дополнительную информацию см. в разделе Исключительная арифметика.
Формат с плавающей запятой половинной точности IEEE представляет собой 16-битное слово, разделенное на 1-битное индикатор знака s , 5-битная экспонента со смещением e и 10-битная дробь f .
Числа половинной точности поддерживаются в MATLAB ® и Simulink ® . Для получения дополнительной информации см. половина
и
Тип данных половинной точности в Simulink.
Диапазон числа определяет пределы представления. Точность дает расстояние между последовательными числами в представлении. Дальность и точность Число с плавающей запятой IEEE зависит от конкретного формата.
Диапазон представляемых чисел для числа с плавающей запятой IEEE с f битами, выделенными для дробь, e бит, выделенных для экспоненты, и смещение e дано смещением = 2 ( e -1 ) -1 приведен ниже.
, где
Нормализованные положительные числа определяются в диапазоне от 2 (1 − смещение ) до (2−2 − f )2 9,0
Нормализованные отрицательные числа определяются в диапазоне от −2 (1− погрешность ) от до −(2−2 − f )2 погрешность .
Положительные числа больше, чем (2–2 — F ) 2 смещение и отрицательные числа, менее чем — (2–2 — F 40) 2 — F 40) 2 3131818181818181818 гг. .
Положительные числа меньше 2 (1− смещения ) и отрицательные числа больше −2 (1− смещения ) являются либо отрицательными значениями, либо денормализованными числами.
Ноль задается специальной битовой комбинацией, где e = 0 и f = 0.
Переполнения и опустошения являются результатом исключительных арифметических условий. Числа с плавающей запятой снаружи
определенный диапазон всегда отображается на ± Inf
.
Число с плавающей запятой является лишь приближением к «истинному» значению из-за конечного размера слова. Поэтому важно иметь представление о точность (или точность) результата с плавающей запятой. Значение v с точность q определяется как v ± q . Для чисел с плавающей запятой IEEE:
v = (−1) s (2 e – bias )(1. f )
and
q = 2 – f × 2 e – смещение
Таким образом, точность связана с количеством битов в дроби поле.
Диапазон, смещение и точность для поддерживаемых типов данных с плавающей запятой приведены в таблицу ниже.
Data Type | Low Limit | High Limit | Exponent Bias | Precision |
---|---|---|---|---|
Half | 2 −14 ≈ 6. 1·10 −5 | (2−2 -10 ) ·2 15 ≈ 6,5·10 4 | 15 | 2 −10 ≈ 10 −3 |
Одиночный | 2 −126 ≈ 10 −38 | 2 128 ≈ 3 · 10 38 | 127 | 2 −23 ≈ 10 −7 |
Двойной | 2 −1022 ≈ 2 · 10 −308 | 2 1024 ≈ 2 · 10 308 | 1023 | 2 −52 ≈ 10 −16 |
Поскольку числа с плавающей запятой представляются с использованием знака/величины, существует два представления нуля, одного положительного и одного отрицательного. Для обоих представлений e = 0 и f .0 = 0,0.
Стандарт IEEE 754 определяет методы и процедуры, обеспечивающие предсказуемые результаты.
производятся независимо от аппаратной платформы. Денормализованные числа, Inf
и NaN
определены для работы с исключительными
арифметика (недостаточное и переполнение).
Если недолив или переполнение обрабатывается как Inf
или NaN
, то для решения этой проблемы требуются значительные накладные расходы процессора.
исключение. Хотя стандарт IEEE 754 определяет методы и процедуры для работы с исключительными
арифметические условия согласованным образом, производители микропроцессоров могут обрабатывать
эти условия способами, которые отходят от стандарта.
Денормализованные числа используются для обработки случаев недополнения экспоненты. Когда экспонента результат слишком мал (т. е. отрицательный показатель степени имеет слишком большую величину), результат денормируется путем сдвига дроби вправо и оставления показателя степени в его минимальное значение. Использование денормализованных чисел также называется постепенным недостатком. Без денормализованных чисел разрыв между наименьшим представимым ненулевым числом и ноль намного шире, чем разрыв между наименьшим представимым ненулевым числом и следующее большее число. Постепенный недолив заполняет этот пробел и снижает влияние значение потери экспоненты до уровня, сравнимого с округлением среди нормализованных чисел. Денормализованные числа обеспечивают расширенный диапазон для малых чисел за счет точность.
Арифметика с участием Inf
(бесконечность) рассматривается как предельный случай
вещественной арифметики с бесконечными значениями, определяемыми как те, которые находятся вне диапазона
представимые числа, или −∞ ≤ (представимые
числа) < ∞. За исключением особых случаев, обсуждаемых ниже
( NaN
), любая арифметическая операция, включающая Inf
дает Inf
. Inf
представлен наибольшим необъективным
показатель степени, разрешенный форматом, и дробная часть нуля.
A NaN
(не число) — это символический объект, закодированный в формате с плавающей запятой.
формат. Существует два типа NaN
: сигнальный и тихий. сигнализация NaN
сигнализирует об исключении недопустимой операции. Тишина NaN
распространяется почти на каждую арифметическую операцию без
сигнализируя об исключении. Следующие операции приводят к NaN
: ∞–∞, –∞+∞, 0×∞, 0/0 и ∞/∞.
Представлены как сигнальный NaN
, так и тихий NaN
по наибольшему смещенному показателю, разрешенному форматом, и ненулевой дроби.