Номера с фиксированной точкой ограничены тем, что они не могут одновременно представлять очень большие или очень маленькие числа с использованием разумного размера слова. Это ограничение может быть преодолено при помощи научного обозначения. С помощью научного обозначения можно динамически расположить двоичную точку в удобном месте и использовать степени двоичной матрицы, чтобы отслеживать это местоположение. Таким образом, вы можете представлять область значений очень больших и очень малых чисел с несколькими цифрами.
Можно представлять любые двоичные числа с плавающей запятой в научном обозначении форме следующим f 2e, где f - дробь (или мантисса), 2
является радикалом или основой (в данном случае двоичным), и e является экспонентом радиуса. Радикс всегда является положительным числом, в то время как f и e могут быть положительными или отрицательными.
При выполнении арифметических операций оборудование с плавающей точкой должно учитывать, что знак, экспонента и дробь все закодированы в одном двоичном слове. Это приводит к сложной логике схемам по сравнению со схемами для двоичных операций с фиксированной точкой.
Программное обеспечение Fixed-Point Designer™ поддерживает половинную точность, одинарную точность и двойную точность чисел с плавающей запятой как определено в IEEE® Стандарт 754.
Прямая аналогия существует между научными обозначениями и radix точки обозначения. Например, научное обозначение с использованием пяти десятичных цифр для дроби приняло бы форму
где и p является целым числом неограниченной области значений.
Radix точки обозначения использование пяти бит для дроби одинаково, кроме числа основы
где и q является целым числом неограниченной области значений.
Для чисел с фиксированной точкой экспонента фиксирована, но нет причин, по которым двоичная точка должна быть смежной с дробью. Для получения дополнительной информации см. «Двоичная интерпретация точек».
Стандарт 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.
Связь между форматом двойной точности и представлением вещественных чисел задается как
Для получения дополнительной информации см. раздел «Исключительная арифметика».
Формат IEEE с одной точностью с плавающей точкой является 32-битным словом, разделенным на 1-битный s индикатора знака, 8-битный смещенный экспонентный e и 23-битный f дроби.
Связь между форматом с одинарной точностью и представлением вещественных чисел задается как
Для получения дополнительной информации см. раздел «Исключительная арифметика».
Формат половинной точности 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−2−f)2bias.
Нормированные отрицательные числа заданы в области значений − 2(1−bias) в − (2−2−f)2bias.
Положительные числа, большие (2−2−f)2bias и отрицательные числа меньше − (2−2−f)2bias являются переполнениями.
Положительные числа менее 2(1−bias) и отрицательные числа, больше − 2(1−bias) являются либо недотоками, либо денормализованными числами.
Нуль задается специальным битовым шаблоном, где e = 0 и f = 0.
Переполнения и недотоки являются результатом исключительных арифметических условий. Числа с плавающей запятой вне заданной области значений всегда сопоставляются с ± Inf
.
Примечание
Можно использовать команды MATLAB realmin
и realmax
для определения динамической области значений значений с двойной точностью и плавающей точностью для вашего компьютера.
Число с плавающей запятой является только приближение значения «true» из-за конечного размера слова. Поэтому важно иметь понимание точности (или точности) результата с плавающей точкой. Значение v с точностью q определено <reservedrangesplaceholder1> ± <reservedrangesplaceholder0> . Для чисел с плавающей запятой IEEE,
v = (−1)s(2e–bias) (1. f)
и
q = 2–f × 2e–bias
Таким образом, точность связана с количеством бит в поле дроби.
Область значений, смещение и точность для поддерживаемых типов данных с плавающей точкой приведены в таблице ниже.
Тип данных | Низкий предел | Высокий предел | Смещение экспоненты | Точность |
---|---|---|---|---|
Половина | 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
(бесконечность) рассматривается как предельный случай действительной арифметики с бесконечными значениями, заданными как те, которые находятся вне области значений представимых чисел, или −∞ ≤ (представимые числа) < ∞. За исключением особых случаев, обсуждаемых ниже (NaN
), любая арифметическая операция с Inf
приводит к Inf
. Inf
представлен самой большой смещенной экспонентой, допускаемой форматом и долей в нуле.
A NaN
(не-a-number) - символьная сущность, закодированный в формате с плавающей точкой. Существует два типа NaN
: сигнализация и тишина. Сигнальное NaN
сигнализирует о недопустимом исключении операции. Тихий NaN
распространяется почти через каждую арифметическую операцию, не сигнализируя об исключении. Следующие операции приводят к NaN
: ∞ - ∞, - ∞ + ∞, 0×∞, 0/0 и ∞/ ∞.
Обе сигнальные NaN
и тихий NaN
представлены самой большой смещенной экспонентой, допустимой форматом и ненулевой дробью. Битовый шаблон для тихого NaN
задается 0. f, где самый значительный бит в f должен быть единичным. Битовый шаблон для сигнального NaN
задается 0. f, где самый значительный бит в f должен быть нулем, а по крайней мере один из остальных бит должен быть ненулевым.