Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура ЭВМ.doc
Скачиваний:
27
Добавлен:
23.11.2019
Размер:
6.47 Mб
Скачать

Стандарт ieee 754

До 80-х годов каждый производитель компьютеров имел свой собственный формат чисел с пла­вающей точкой. Все форматы отличались друг от друга, более того, в некоторых из них арифметические действия выполнялись неправильно, поскольку арифметика с плавающей точкой имеет некоторые тонкости, которые не очевидны для обыч­ного разработчика аппаратного обеспечения.

Чтобы изменить эту ситуацию, в конце 70-х годов IEEE (Institute of Electrical and Electronic Engineers – институт инженеров по электротехнике и электронике, США) учредил комиссию для стандартизации арифметики с плавающей точкой. Целью было не только дать воз­можность переносить данные с одного компьютера на другой, но и обеспечить раз­работчиков аппаратного обеспечения заведомо правильной моделью. В результа­те получился стандарт IEEE 754 (IEEE, 1985). В настоящее время большинство процессоров содержат команды с плавающей точкой, которые соответствуют этому стандарту. В отличие от многих стандартов, которые представляли собой неудачные компромиссы и мало кого устраивали, этот стандарт неплох, в большей степени благодаря тому, что его изначально разраба­тывал один человек, профессор математики университета Беркли Вильям Каган (William Kahan).

Стандарт определяет три формата: с одинарной точностью (32 бита), с удвоен­ной точностью (64 бита) и с повышенной точностью (80 битов) (Рис. 1 .2).

Рис. 1.2. Форматы для стандарта IEEE с плавающей точкой: одинарная точность (а), удвоенная точность (б), повышенная точность (в)

Все форматы начинаются со знакового бита для всего числа: 0 указывает на положительное число, а 1 – на отрицательное.

Затем следует смещенная экспо­нента, т.е. к ней прибавляется число так, чтобы экспонента всегда была неотрицательной. Для формата одинарной точности прибавляется 127, для формата удвоенной точности смещение – 1023, для повышенной точности – 16383. Всегда неотрицательная экспонента избавляет от необходимости выделять один бит для хранения ее знака и упрощает выполнение операций сравнения экспонент и арифметических операций над ними.

Нормализованная мантисса начинается с двоичной запятой, за которой следует 1 бит, а затем остаток мантиссы. Однако, 1 бит перед мантиссой сохранять не нужно, посколь­ку можно просто предполагать, что он есть. Следовательно, стандарт определяет мантиссу следующим образом: она состоит из неявного бита, который всегда ра­вен 1, неявной двоичной запятой, за которыми идут 23, 52 или 64 произвольных бита. Если все биты мантиссы равны 0, то мантисса имеет значение 1,0. Если они равны 1, то числовое значение мантиссы немного меньше, чем 2,0.

Существуют традиционные проблемы, связанные с числами в компьютере – это определение их переполнения, потери значимости и инициализации. Для этого в стандарте IEEE помимо нормализованных чисел предусмотрено еще 4 типа чисел (Рис. 1 .3).

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

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

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

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

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

Подведем итоги

  • в вычислительной технике удобнее использовать числа, представленные в нормальной форме;

  • для однозначного отображения числа используется нормальная нормализованная форма;

  • вычислительная техника оперирует с числами конечной точности, поэтому результаты различных арифметических операций необходимо округлять;

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

Вопросы для самоконтроля

  1. Вспомните и назовите принципы представления чисел с плавающей точкой. Что такое нормальная нормализованная форма? Зачем она используется?

  2. Что такое округление? Почему оно применяется в вычислительной технике?

  3. Р

    асскажите основные положения стандарта IEEE. Почему помимо нормализованных чисел в стандарте были введены дополнительные 4 типа чисел?

Индивидуальные задания

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

    • 9

    • 5/32

    • -5/32

    • 6,125

_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

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

  • 42E28000h

  • 3F880000h

  • 00800000h

  • C7F00000h

_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

  1. Число с плавающей точкой в формате одинарной точности в IBM/370 со­стоит из 7-битной смещенной экспоненты (смещение 64), 24-битной мантиссы и знакового бита. Двоичная запятая находится слева от мантиссы, Основание возведения в степень – 16. Порядок полей – знаковый бит, экс­понента, мантисса. Выразите число 7/64 в виде нормализованного шестнадцатеричного числа в этой системе.

_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

  1. Чтобы сложить два числа с плавающей точкой, нужно уровнять экспоненты (сдвинув мантиссу). Затем можно сложить мантиссы и нормализовать ре­зультат, если в этом есть необходимость. Сложите числа одинарной точнос­ти ЗЕЕ00000h и 3D800000h и выразите нормализованный результат в шест­надцатеричной системе счисления.

_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

  1. Следующие двоичные числа с плавающей точкой состоят из знакового бита, смещенной экспоненты (смещение 63) с основанием 2 и 16-битной мантис­сы. Нормализуйте их.

  • 0 1000000 0001010100000001

  • 0 0111111 0000001111111111

  • 0 1000011 1000000000000000

____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________