Подполнение арифметических операций

редактировать

Термин арифметическое недополнение (также потеря значимости с плавающей запятой или просто потеря значимости ) является условием в компьютерной программе где результатом вычисления является число меньшее по абсолютной величине, чем компьютер может фактически представить в памяти на своем центральном процессоре (ЦП).

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

Сохранение слишком малых значений в целочисленной переменной (например, попытка сохранить -1 в беззнаковом целом числе) правильно называется целым числом. overflow или, в более широком смысле, целочисленный перенос. Термин «потеря значимости» обычно относится только к числам с плавающей запятой, что является отдельной проблемой. В большинстве проектов с плавающей запятой невозможно сохранить слишком маленькое значение, поскольку обычно они подписаны и имеют отрицательное значение бесконечность.

Содержание

  • 1 Разрыв незаполнения
  • 2 Обработка недополнения
  • 3 См. Также
  • 4 Ссылки

Разрыв незаполнения

Интервал между −fminN и fminN, где fminN - наименьшее положительное нормальное значение с плавающей запятой называется промежутком потери значимости. Это связано с тем, что размер этого интервала на много порядков больше, чем расстояние между соседними нормальными значениями с плавающей запятой сразу за промежутком. Например, если тип данных с плавающей запятой может представлять 20 битов, промежуток потери значимости в 2 раза больше, чем абсолютное расстояние между соседними значениями с плавающей запятой сразу за промежутком.

В старых проектах, разрыв незаполнения имел только одно полезное значение, ноль. При возникновении потери значимости истинный результат заменялся нулем (либо непосредственно аппаратным обеспечением, либо системным программным обеспечением, обрабатывающим первичное состояние потери значимости). Такая замена называется «сброс до нуля».

В редакции IEEE 754 1984 г. введены субнормальные числа. Субнормальные числа (включая ноль) заполняют промежуток недополнения значениями, где абсолютное расстояние между соседними значениями такое же, как для соседних значений сразу за промежутком недополнения. Это позволяет «постепенное истощение», когда используется ближайшее субнормальное значение, так же, как и ближайшее нормальное значение, когда это возможно. Даже при использовании постепенного опустошения ближайшее значение может быть нулевым.

Абсолютное расстояние между соседними значениями с плавающей запятой сразу за промежутком называется машинным эпсилон, обычно характеризуемым наибольшим значением, sum со значением 1 приведет к ответу со значением 1 в этой схеме с плавающей запятой. Это можно записать как fl (1 + ϵ) = 1 {\ displaystyle fl (1+ \ epsilon) = 1}{\ displaystyle fl (1+ \ epsilon) = 1} , где fl () {\ displaystyle fl ()}fl () - это функция, которая преобразует реальное значение в представление с плавающей запятой. Хотя машинный эпсилон не следует путать с уровнем потери значимости (предполагая субнормальные числа), он тесно связан. Машинный эпсилон зависит от количества битов, составляющих значимость, тогда как уровень потери значимости зависит от количества цифр, составляющих поле экспоненты. В большинстве систем с плавающей запятой уровень потери значимости меньше, чем машинный эпсилон.

Обработка потери значимости

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

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

См. Также

Ссылки

Последняя правка сделана 2021-06-11 16:16:08
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте