Таненбаум Э.- Архитектура компьютера. стр.539

Проблема возникает в том случае, если абсолютное значение (модуль) результата меньше самого маленького нормализованного числа с плавающей точкой, которое можно представить в этой системе. Раньше аппаратное обеспечение действовало одним из двух способов: либо устанавливало результат на 0, либо вызывало ошибку потери значимости. Ни один из этих двух способов не является удовлетворительным, поэтому в стандарт IEEE введены ненормализованные

числа. Эти числа имеют экспоненту 0 и мантиссу, представленную следующими 23 или 52 битами. Неявный бит 1 слева от двоичной точки превращается в 0. Ненормализованные числа можно легко отличить от нормализованных, поскольку у последних не может быть нулевой экспоненты.

Таненбаум Э.- Архитектура компьютера.

Рис. Б.4. Числовые типы стандарта IEEE

Самое маленькое нормализованное число с одинарной точностью содержит 1 в экспоненте и 0 в мантиссе и представляет 1,0 х 2~126. Самое большое ненормализованное число содержит 0 в экспоненте и все единицы в мантиссе и представляет примерно 0,9999999 х 2~127, то есть почти то же самое число. Следует отметить, что это число содержит только 23 бита значимости, а все нормализованные числа — 24 бита.

По мере уменьшения результата при дальнейших вычислениях экспонента по-прежнему остается равной 0, а первые несколько битов мантиссы превращаются в нули, что уменьшает и значение, и число значимых битов мантиссы. Самое маленькое ненулевое ненормализованное число содержит 1 в крайнем правом бите, а все остальные биты равны 0. Экспонента представляет 2~127, а мантисса — 2~23, поэтому значение равно 2~150. Такая схема предусматривает постепенное исчезновение значимых разрядов, а не перескакивает на 0, когда результат не удается выразить в виде нормализованного числа.

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

Простого решения проблемы переполнения нет. Для этого существует специальное представление бесконечности: с экспонентой, содержащей все единицы, и мантиссой, равной 0. Это число можно использовать в качестве операнда. Оно подчиняется обычным математическим правилам для бесконечности. Например, бесконечность и любое число в сумме дают бесконечность. Конечное число, деленное на бесконечность, равно 0. Любое конечное число, разделенное на 0, стремится к бесконечности.

А что получится, если бесконечность разделить на бесконечность? Результат не определен. Для такого случая существует другой специальный формат — не число (Not a Number, NaN). Его тоже можно использовать в качестве операнда.

Вопросы и задания

1. Преобразуйте следующие числа в формат стандарта IEEE с одинарной точностью. Результаты представьте в восьми шестнадцатеричных разрядах.

1) 9;

2) 5/32;

3) -5/32;

4) 6,125.

2. Преобразуйте следующие числа с плавающей точкой одинарной точности из шестнадцатеричной в десятичную систему счисления:

1) 42Е28000Н;

2) 3F880000H;

3) 00800000Н;

4) C7F00000H.


⇐ Предыдущая страница| |Следующая страница ⇒