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

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

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

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

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

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

Научное обозначение

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

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

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

Radix точки обозначения использование пяти бит для дроби одинаково, кроме числа основы

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

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

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

Стандарт IEEE 754 для чисел с плавающей запятой

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

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

Бит знака

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

Поле дроби

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

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

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

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

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

Формат с двойной точностью 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 с одной точностью с плавающей точкой является 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 с плавающей точностью представляет собой 16-битное слово, разделенное на s индикатора 1-битного знака, 5-битную смещенную экспонентную e и 10-битную дробь f.

Числа половинной точности поддерживаются в MATLAB® и Simulink®. Для получения дополнительной информации смотрите half и тип данных половинной точности в Simulink.

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

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

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

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

где

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

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

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

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

  • Нуль задается специальным битовым шаблоном, где e = 0 и f = 0.

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

Примечание

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

Точность

Число с плавающей запятой является только приближение значения «true» из-за конечного размера слова. Поэтому важно иметь понимание точности (или точности) результата с плавающей точкой. Значение v с точностью q определено <reservedrangesplaceholder1> ± <reservedrangesplaceholder0> . Для чисел с плавающей запятой IEEE,

v = (−1)s(2ebias) (1. f)

и

q = 2f × 2ebias

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

Примечание

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

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

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

Тип данных

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

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

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

Точность

Половина

2−14 ≈ 6.1·10−5

(2−2-10) ·215≈ 6.5·104

15

2−10 ≈ 10−3

Одинок

2−126 ≈ 10−38

2128 ≈ 3 · 1038

127

2−23 ≈ 10−7

Дважды

2−1022 ≈ 2 · 10−308

21024 ≈ 2 · 10308

1023

2−52 ≈ 10−16

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

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

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

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

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

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

Inf

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

NaN

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

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

Похожие темы