Числа фиксированной точки ограничиваются, в котором они не могут одновременно представлять очень большие или очень небольшие числа с помощью разумного размера слова. Это ограничение может быть преодолено при помощи экспоненциального представления. С экспоненциальным представлением можно динамически поместить двоичную точку в удобном местоположении и использовать степени двоичного файла отслеживать то местоположение. Таким образом можно представлять область значений очень больших и очень небольших чисел только с несколькими цифрами.
Можно представлять любое бинарное число с плавающей запятой в форме экспоненциального представления как , где f является частью (или мантисса), 2
является основанием или основой (двоичный файл в этом случае), и e является экспонентой основания. Основание является всегда положительным числом, в то время как f и e могут быть положительными или отрицательными.
При выполнении арифметических операций оборудование с плавающей точкой должно учесть, что знак, экспонента и часть все закодированы в том же двоичном слове. Это приводит к схемам сложной логики при сравнении со схемами для бинарных операций фиксированной точки.
Программное обеспечение Fixed-Point Designer™ поддерживает числа с плавающей запятой с двойной точностью и с одинарной точностью, как задано IEEE® Standard 754.
Прямая аналогия существует между обозначением экспоненциального представления и разделительной точки. Например, экспоненциальное представление с помощью пяти десятичных цифр для части приняло бы форму
где и p является целым числом неограниченной области значений.
Обозначение разделительной точки с помощью пяти битов для части является тем же самым за исключением основания системы счисления
где и q является целым числом неограниченной области значений.
Для чисел фиксированной точки фиксируется экспонента, но нет никакой причины, почему двоичная точка должна быть непрерывной с частью. Для получения дополнительной информации смотрите Единственное двоичной точкой Масштабирование.
Стандарт 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. Для получения дополнительной информации смотрите Знаковый бит, Поле Экспоненты и Дробное Поле. Представление этого формата приведено ниже.
Отношением между этим форматом и представлением вещественных чисел дают
Исключительная Арифметика обсуждает денормализованные значения.
IEEE формат с плавающей точкой с двойной точностью является 64-битным словом, разделенным на 1-битный индикатор s знака, 11-битный смещенный порядок e и 52-битная часть f. Для получения дополнительной информации смотрите Знаковый бит, Поле Экспоненты и Дробное Поле. Представление этого формата показывают в следующей фигуре.
Отношением между этим форматом и представлением вещественных чисел дают
Исключительная Арифметика обсуждает денормализованные значения.
Полуточность IEEE формат с плавающей точкой является 16-битным словом, разделенным на 1-битный индикатор s знака, 5-битный смещенный порядок e и 10-битный дробный f. Числа полуточности поддерживаются только в MATLAB®. Для получения дополнительной информации смотрите half
.
Область значений номера дает пределы представления, в то время как точность дает расстояние между последовательными числами в представлении. Область значений и точность числа с плавающей запятой IEEE зависят от определенного формата.
Область значений представимых чисел для числа с плавающей запятой IEEE с битами f, выделенными для части, биты e, выделенные для экспоненты и смещения e, данного приведен ниже.
где
Нормированные положительные числа заданы в области значений к .
Нормированные отрицательные числа заданы в области значений к .
Положительные числа, больше, чем и отрицательные числа, больше, чем переполнение.
Положительные числа меньше, чем и отрицательные числа меньше, чем или потери значимости или денормализованные числа.
Нуль дан специальной комбинацией двоичных разрядов, где и .
Переполнение и потери значимости следуют из исключительных арифметических условий. Числа с плавающей запятой вне заданной области значений всегда сопоставляются с ±Inf.
Можно использовать команды MATLAB realmin
и realmax
, чтобы определить динамический диапазон значений с плавающей точкой с двойной точностью для компьютера.
Из-за конечного размера слова число с плавающей запятой является только приближением “истинного” значения. Поэтому важно иметь понимание точности (или точность) результата с плавающей точкой. В целом значение v с точностью q задано . Для чисел с плавающей запятой IEEE,
v = (–1) s (2e–bias) (1. f
и
q = 2 f\U 00D7\2E bias
Таким образом точность сопоставлена с количеством битов в дробном поле.
Высокие и низкие пределы, смещение экспоненты и точность для поддерживаемых типов данных с плавающей точкой даны в следующей таблице.
Тип данных | Низкий предел | Высокий предел | Смещение экспоненты | Точность |
---|---|---|---|---|
Половина (только 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
(бесконечность), обработана как ограничивающий случай арифметики действительных чисел с бесконечными значениями, заданными как те вне области значений представимых чисел, или – ∞ ≤ (представимые числа) < ∞. За исключением особых случаев, обсужденных ниже (NaN
), любая арифметическая операция, включающая Inf
, приводит к Inf
. Inf
представлен самым большим смещенным порядком, позволенным форматом и частью нуля.
NaN
(не число) является символьной сущностью, закодированной в формате с плавающей точкой. Существует два типа NaN
: сигнализация и подавляет шумы. Сигнальный NaN
сигнализирует о недопустимом исключении операции. Тихий NaN
распространяет почти через каждую арифметическую операцию, не сигнализируя об исключении. Следующие операции приводят к NaN
: ∞ – ∞, – ∞ + ∞, 0× ∞, 0/0, и ∞ / ∞.
Оба типа NaN
представлены самым большим смещенным порядком, позволенным форматом и частью, которая является ненулевой. Комбинация двоичных разрядов для тихого NaN
дана 0. f, где старший значащий номер в f должен быть тем, в то время как комбинация двоичных разрядов для сигнального NaN
дана 0. f, где старший значащий номер в f должен быть нулем и по крайней мере одним из остающихся чисел, должен быть ненулевым.