Числа с плавающей запятой

Числа с плавающей запятой

Числа фиксированной точки ограничиваются, в котором они не могут одновременно представлять очень большие или очень небольшие числа с помощью разумного размера слова. Это ограничение может быть преодолено при помощи экспоненциального представления. С экспоненциальным представлением можно динамически поместить двоичную точку в удобном местоположении и использовать степени двоичного файла отслеживать то местоположение. Таким образом можно представлять область значений очень больших и очень небольших чисел только с несколькими цифрами.

Можно представлять любое бинарное число с плавающей запятой в форме экспоненциального представления как f2e, где f является частью (или мантисса), 2 является основанием или основой (двоичный файл в этом случае), и e является экспонентой основания. Основание является всегда положительным числом, в то время как f и e могут быть положительными или отрицательными.

При выполнении арифметических операций оборудование с плавающей точкой должно учесть, что знак, экспонента и часть все закодированы в том же двоичном слове. Это приводит к схемам сложной логики при сравнении со схемами для бинарных операций фиксированной точки.

Программное обеспечение Fixed-Point Designer™ поддерживает числа с плавающей запятой с двойной точностью и с одинарной точностью, как задано IEEE® Standard 754.

Экспоненциальное представление

Прямая аналогия существует между обозначением экспоненциального представления и разделительной точки. Например, экспоненциальное представление с помощью пяти десятичных цифр для части приняло бы форму

±d.dddd×10p=±ddddd.0×10p4=±0.ddddd×10p+1,

где d=0,...,9 и p является целым числом неограниченной области значений.

Обозначение разделительной точки с помощью пяти битов для части является тем же самым за исключением основания системы счисления

±b.bbbb×2q=±bbbbb.0×2q4=±0.bbbbb×2q+1,

где b=0,1 и q является целым числом неограниченной области значений.

Для чисел фиксированной точки фиксируется экспонента, но нет никакой причины, почему двоичная точка должна быть непрерывной с частью. Для получения дополнительной информации смотрите Единственное двоичной точкой Масштабирование.

Формат IEEE

Стандарт IEEE 754 был широко принят и используется с фактически всеми процессорами с плавающей точкой и арифметическими сопроцессорами — с существенным исключением многих DSP процессоры с плавающей точкой.

Среди прочего этот стандарт задает четыре формата числа с плавающей запятой, из которых одиночных игр и удваивается, наиболее широко используется. Каждый формат содержит три компонента: знаковый бит, дробное поле и поле экспоненты. Эти компоненты, а также определенные форматы для одиночных игр и удваиваются, обсуждены в разделах, которые следуют.

Знаковый бит

В то время как дополнение two является предпочтительным представлением для чисел фиксированной точки со знаком, числа с плавающей запятой IEEE используют представление знака/значения, где знаковый бит явным образом включен в слово. Используя это представление, знаковый бит 0 представляет положительное число, и знаковый бит 1 представляет отрицательное число.

Дробное поле

В целом числа с плавающей запятой могут быть представлены многими различными способами путем сдвига номера налево или направо от двоичной точки и уменьшения или увеличения экспоненты двоичного файла соответствующей суммой.

Чтобы упростить операции на этих числах, они нормированы в формате IEEE. Нормированное двоичное число имеет часть формы 1.f, где f имеет фиксированный размер для типа определенных данных. Поскольку крайний левый дробный бит всегда является 1, это является ненужным сохранить этот бит и является поэтому неявным (или скрытым). Таким образом часть n-bit хранит n+1-bit номер. Формат IEEE также поддерживает денормализованные числа, которые имеют часть формы 0.f. Нормированные и денормализованные форматы обсуждены более подробно в следующем разделе.

Поле экспоненты

В формате IEEE смещаются представления экспоненты. Это означает, что фиксированное значение (смещение) вычтено из поля, чтобы получить истинное значение экспоненты. Например, если поле экспоненты составляет 8 битов, то числа 0 до 255 представлены, и существует смещение 127. Обратите внимание на то, что некоторые значения экспоненты резервируются для отмечающего Inf (бесконечность), NaN (не число) и денормализованные числа, таким образом, истинный диапазон значений экспоненты от-126 до 127. Смотрите разделы Inf и NaN.

Формат с одинарной точностью

IEEE формат с плавающей точкой с одинарной точностью является 32-битным словом, разделенным на 1-битный индикатор s знака, 8-битный смещенный порядок e и 23-битный дробный f. Для получения дополнительной информации смотрите Знаковый бит, Поле Экспоненты и Дробное Поле. Представление этого формата приведено ниже.

Отношением между этим форматом и представлением вещественных чисел дают

value={(1)s(2e127)(1.f)нормированный, 0<e<255,(1)s(2e126)(0.f)денормализованный, e=0, f>0,исключительное значение в противном случае.

Исключительная Арифметика обсуждает денормализованные значения.

Формат с двойной точностью

IEEE формат с плавающей точкой с двойной точностью является 64-битным словом, разделенным на 1-битный индикатор s знака, 11-битный смещенный порядок e и 52-битная часть f. Для получения дополнительной информации смотрите Знаковый бит, Поле Экспоненты и Дробное Поле. Представление этого формата показывают в следующей фигуре.

Отношением между этим форматом и представлением вещественных чисел дают

value={(1)s(2e1023)(1.f)нормированный, 0<e<2047,(1)s(2e1022)(0.f)денормализованный, e=0, f>0исключительное значение в противном случае.,

Исключительная Арифметика обсуждает денормализованные значения.

Формат полуточности

Полуточность IEEE формат с плавающей точкой является 16-битным словом, разделенным на 1-битный индикатор s знака, 5-битный смещенный порядок e и 10-битный дробный f. Числа полуточности поддерживаются только в MATLAB®. Для получения дополнительной информации смотрите half.

Область значений и точность

Область значений номера дает пределы представления, в то время как точность дает расстояние между последовательными числами в представлении. Область значений и точность числа с плавающей запятой IEEE зависят от определенного формата.

Область значений

Область значений представимых чисел для числа с плавающей запятой IEEE с битами f, выделенными для части, биты e, выделенные для экспоненты и смещения e, данного bias=2(e1)1 приведен ниже.

где

  • Нормированные положительные числа заданы в области значений 2(1bias) к (22f)2bias.

  • Нормированные отрицательные числа заданы в области значений 2(1bias) к (22f)2bias.

  • Положительные числа, больше, чем (22f)2bias и отрицательные числа, больше, чем (22f_2bias переполнение.

  • Положительные числа меньше, чем 2(1bias) и отрицательные числа меньше, чем 2(1bias) или потери значимости или денормализованные числа.

  • Нуль дан специальной комбинацией двоичных разрядов, где e=0 и f=0.

Переполнение и потери значимости следуют из исключительных арифметических условий. Числа с плавающей запятой вне заданной области значений всегда сопоставляются с ±Inf.

Примечание

Можно использовать команды MATLAB realmin и realmax, чтобы определить динамический диапазон значений с плавающей точкой с двойной точностью для компьютера.

Точность

Из-за конечного размера слова число с плавающей запятой является только приближением “истинного” значения. Поэтому важно иметь понимание точности (или точность) результата с плавающей точкой. В целом значение v с точностью q задано v±q. Для чисел с плавающей запятой IEEE,

v = (–1) s (2e–bias) (1. f

и

q = 2 f\U 00D7\2E bias

Таким образом точность сопоставлена с количеством битов в дробном поле.

Примечание

В программном обеспечении MATLAB относительная точность с плавающей точкой дана командой eps, который возвращает расстояние от 1,0 до следующего большего числа с плавающей запятой. Для компьютера, который поддерживает Стандарт IEEE 754, eps = 2-52 или 2.22045 · 10-16.

Параметры типа данных с плавающей точкой

Высокие и низкие пределы, смещение экспоненты и точность для поддерживаемых типов данных с плавающей точкой даны в следующей таблице.

Тип данных

Низкий предел

Высокий предел

Смещение экспоненты

Точность

Половина (только MATLAB)

2-14 ≈ 10-4

216 ≈ 105

15

2-10 ≈ 10 · 10-4

Единственный

2-126 ≈ 10-38

2128 ≈ 3 · 1038

127

2-23 ≈ 10-7

'double'

2-1022 ≈ 2 · 10-308

21024 ≈ 2 · 10308

1023

2-52 ≈ 10-16

Из-за представления знака/значения чисел с плавающей запятой существует два представления нуля, одного положительного и одного отрицательного. Для обоих представлений e = 0 и f.0 = 0.0.

Исключительная арифметика

В дополнение к определению формата с плавающей точкой Стандарт IEEE 754 задает методы и процедуры так, чтобы к предсказуемым результатам привели независимо от аппаратной платформы. А именно, денормализованные числа, Inf и NaN заданы, чтобы иметь дело с исключительной арифметикой (потеря значимости и переполнение).

Если потеря значимости или переполнение обработаны как Inf или NaN, то значительный процессор наверху требуется, чтобы иметь дело за этим исключением. Несмотря на то, что Стандарт IEEE 754 задает методы и процедуры, чтобы иметь дело с исключительными арифметическими условиями сопоставимым способом, производители микропроцессора могут обработать эти условия способами, которые вылетают от стандарта.

Денормализованные числа

Денормализованные числа используются, чтобы обработать случаи исчезновения порядка. Когда экспонента результата является слишком маленькой (т.е. отрицательная экспонента со слишком большим значением), результат денормализовывается сдвигом права часть и отъезд экспоненты в ее минимальном значении. Использование денормализованных чисел также упоминается как постепенная потеря значимости. Без денормализованных чисел, разрыва между самым маленьким представимым ненулевым номером и нулем намного более широко, чем разрыв между самым маленьким представимым ненулевым номером и следующим большим числом. Постепенные заливки потери значимости, которые разрывают и уменьшают влияние исчезновения порядка к уровню, сопоставимому с округлением среди нормированных чисел. Таким образом денормализованные числа предоставляют расширенный спектр для небольших чисел за счет точности.

Inf

Арифметика, включающая Inf (бесконечность), обработана как ограничивающий случай арифметики действительных чисел с бесконечными значениями, заданными как те вне области значений представимых чисел, или – ∞ ≤ (представимые числа) < ∞. За исключением особых случаев, обсужденных ниже (NaN), любая арифметическая операция, включающая Inf, приводит к Inf. Inf представлен самым большим смещенным порядком, позволенным форматом и частью нуля.

NaN

NaN (не число) является символьной сущностью, закодированной в формате с плавающей точкой. Существует два типа NaN: сигнализация и подавляет шумы. Сигнальный NaN сигнализирует о недопустимом исключении операции. Тихий NaN распространяет почти через каждую арифметическую операцию, не сигнализируя об исключении. Следующие операции приводят к NaN: ∞ – ∞, – ∞ + ∞, 0× ∞, 0/0, и ∞ / ∞.

Оба типа NaN представлены самым большим смещенным порядком, позволенным форматом и частью, которая является ненулевой. Комбинация двоичных разрядов для тихого NaN дана 0. f, где старший значащий номер в f должен быть тем, в то время как комбинация двоичных разрядов для сигнального NaN дана 0. f, где старший значащий номер в f должен быть нулем и по крайней мере одним из остающихся чисел, должен быть ненулевым.