Во внутреннем представлении модуль обработки операций с плавающей точкой процессора i486 использует три дополнительных бита (бит защиты, бит округления и бит подклейки), которые применяются для округления чисел в соответствии с истинным результатом бесконечной точности вычислений. Эти биты не доступны для программиста. Всегда, когда адресат может представить истинный результат бесконечной точности, модулю обработки операций с плавающей точкой не надо производить округление. Округление производится в арифметических операциях и операциях сохранения, когда формат адресата не может точно представить истинный результат с бесконечной точностью. Например, вещественное число может быть округлено, если оно сохраняется в более коротком вещественном формате или в целочисленном формате. Истинный результат бесконечной точности также может быть округлен при занесении в регистр.
Модуль обработки операций с плавающей точкой процессора i486 имеет четыре режима округления, устанавливаемые в поле управления округлением (RC) управляющего слова (смотрите Рисунок 15-3). По данному истинному результату b, который не может быть представлен нужным типом данных, модуль обработки операций с плавающей точкой определяет два представимых числа a и c, которые наиболее точно подходят к значению числа b с двух сторон (a < b < c). Затем процессор округляет (изменяет) b на a или c в соответствии с режимом, установленном в поле округления, как показано в Таблице 15-5. Округление вносит в результат ошибку, которая не больше чем единица в разряде, по которому велось округление.
Таблица 15-5. Режимы Округления +---------------------------------------------------------------+|Поле Управ-| Режим | ||ленеия Окру| Округления | Действия при Округлении ||глением | | |+-----------+--------------+------------------------------------|| 00 |Округление до | Определяем, к чему ближе b: к a или|| |ближайшего | c; если число равноудалено от этих || | | чисел, то выбор четного числа (то, || | | у которого наименьший значащий бит || | | нулевой). |+-----------+--------------+------------------------------------|| 01 | Округление | || | снизу | a || | (до -x) | |+-----------+--------------+------------------------------------|| 10 | Округление | || | сверху | c || | (до +x) | |+-----------+--------------+------------------------------------|| 11 | Отсечение | Наименьшее из a или c || | (до 0) | |+---------------------------------------------------------------+
ОБРАТИТЕ ВНИМАНИЕ: a < b < c; a и c - успешно представимые числа; b - не представимо.
"Округление до ближайшего" - этот режим устанавливается по умолчанию и применим ко многим программным продуктам; он предоставляет наибольшую точность и статистически несмещенную оценку истинного результата.
Режим "отсечения" или "округления до нуля" применим к целочисленным арифметическим операциям.
"Округление в большую сторону" и "округление в меньшую сторону" называются ориентированным округлением и могут быть использованы для реализации интервальной арифметики. Интервальная арифметика используется для определения верхней и нижней границы для истинного результата многоступенчатых расчетов при округлении промежуточных результатов вычислений.
Управление округлением применимо только к арифметическим операциям (список арифметических и неарифметических команд приведен в Главе 16).