Формат Короткий Длинный Расширенный

Длина числа (биты) 32 64 80

Размерность мантиссы М 23 52 64

Диапазон значений 10-38...1038 10-308…10308 10-4932…104932

Размерность

характеристики q 8 11 15

Значение фиксированного

смещения +127 (7F) +1023 (3FF) +16383 (3FFF)

0111 1111 0011 1111 1111 0011 1111 1111 1111

Диапазон характеристик q 0...255 0...2047 0...32767

Диапазон порядков р______-126...+ 127 -1022...+ 1023 -16382...+ 16383

В табл. 19.2 показаны диапазоны значений характеристик q и соответствующих им истинных порядков р вещественных чисел. Отметим, что нулевому порядку вещественного числа в коротком формате соответствует значение характеристи­ки равное 127, которому в двоичном представлении соответствует значение 0111 1111. Отрицательному порядку р, например, -1, будет соответствовать характе­ристика q= -1+127=126, В двоичном виде ей соответствует значение 0111 1110. Положительному порядку р, например, +1, будет соответствовать характеристи­ка q=l + 127=128, в двоичном виде ей соответствует значение 1000 0000. То есть, все положительные порядки имеют в двоичном представлении характеристики старший бит равный единице, а отрицательные порядки — нет. Не кажется ли вам, что мы нашли место, где спрятан знак порядка? В старшем бите характеристики.

Так как нормализованное вещественное число всегда имеет целую единичную часть (исключая представление перечисленных выше специальных численных значений), то при его представлении в памяти появляется возможность считать первый разряд вещественного числа единичным по умолчанию и учитывать его наличие только па аппаратном уровне. Это дает возможность увеличить диапа­зон представимых чисел, так как появляется лишний разряд, который можно использовать для представления мантиссы числа. Но это справедливо только для

короткого и длинного форматов вещественных чисел. Расширенный формат, как внутренний формат представления числа любого типа в сопроцессоре, содержит целую единичную часть вещественного в явном виде.

Короткое вещественное число длиной в 32 разряда определяется директивой dd. При этом обязательным в записи числа является наличие десятичной точки, даже если оно не имеет дробной части. Для транслятора десятичная точка является указанием, что число нужно представить в виде числа с плавающей точкой в ко­ротком формате (рис. 19.7).

Это же касается длинного и расширенного форматов представления вещественных чисел, определяемых директивами dq и dt.

Другой способ задания вещественного числа директивами dd, dq и dt — экспоненциаль­ная форма с использованием символа «е». Вид вещественного числа в поле опе­рандов директив dd, dq и dt можно представить синтаксической диаграммой (рис. 19.8).

Чтобы окончательно разобраться с тонкостями представления вещественных чисел различных форматов в памяти, рассмотрим несколько примеров.

 

Пример 19.1. Определение вещественного числа короткого формата

Определим в программе вещественное число 45,56 в коротком формате:

dd 45.56

или

dd 45.56е0

или

dd 0.4556е2

В памяти это число будет выглядеть так:

71 3d 36 42

Учитывая, что в архитектуре Intel принят перевернутый порядок следования байт в памяти в соответствии с принципом «младший байт по младшему адресу», ис­тинное представление числа 45,56 будет следующим: 42 36 3d 71 В двоичном представлении в памяти это будет иметь вид, как на рис. 19.9.

На рис. 19.9 видно, что старшая единица мантиссы, при представлении в памяти, отсутствует.

Пример 19.2. Определение вещественного числа длинного формата Определим в программе вещественное число 45,56 в длинном формате:

dq 45.56

или

dq 45.56е0

В памяти это число будет выглядеть так:

47 e1 7а 14 ае с7 46 40

Перевернув его, получим истинное значение:

40 46 с7 ае 14 7а el 47

 

Пример 19.3.Определение вещественного числа расширенного формата

Определим в программе вещественное число 45,56 в расширенном формате представления:

dt 45.56

В памяти это число будет выглядеть так:

71 3d 0а d7 а3 70 3d b6 04 40

Перевернув его, получим истинное значение в памяти:

40 04 b6 3d 70 a3 d7 0a 3d 71

А вот его двоичное представление полезно рассмотреть подробнее (рис. 19.10):

 

 

0100 0000 0000 0100 1011 0110 0011 1101 0111 0000 1010 . 0011 1101 0111 0000 1010 11100001 0111 0001

Данное число имеет следующее назначение битов:

0 — знак «+»;

100 0000 0000 0100 - характеристика q=l,6388;

1011 01 — целая часть числа (45);

10 0011 1101 0111 0000 1010 ООН 1101 0111 0000

1010 1110 0001 0111 0001 - дробная часть числа (0,56).

Как видно, в мантиссе явно присутствует старшая единица, чего не было в коротком и длинном форматах представления вещественного числа.

 

Дальнейшее обсуждение требует четкого понимания того, каким образом из дроб­ного десятичного числа получается его расширенное вещественное представле­ние. Рассмотрим этот процесс по шагам.

1. Переведем десятичную дробь 45,56 в двоичное представление. В результате получим эквивалент­ное двоичное представление: 45,56 =101101.1000111101011100001010001

2. Нормализуем число. Для этого перекосим точку влево, до тех пор, пока в це­лой части числа не останется одна двоичная единица. Число переносов влево (или вправо, если десятичное число было меньше единицы) будет являться порядком числа. Но будьте внимательны — в поле характеристики заносится смещенное значение порядка (табл. 19.2). Таким образом, после перемещения точки получаем значение порядка равное 5. Соответственно, характеристика будет выглядеть так: 5+16383=1638810=1000000000001002.

Сформированный результат в виде вещественного числа в расширенном формате состоит из трех компонент:

знака — 0;

характеристики - 100000000000100;

мантиссы - 1011 ОНО ООН 1101 0111 0000 1010 ООН

1101 0111 0000 1010 1110 0001 0111 0001

Ниже вы научитесь пользоваться отладчиком для работы с сопроцессором и по­лучите возможность просматривать содержимое регистров стека. При этом содер­жимое регистров стека будет изображаться в шестнадцатеричном виде: 40 04 b6 3d 70 а3 d7 0a 3d 71. Видно, что он полностью совпадает с приведенным выше представлением числа в памяти, если оно описано в директиве dt. В качестве итога еще раз подчеркнем, что расширенный формат представления вещественного числа является единственным форматом представления чисел в регистрах сопроцессора. Само преобразование производится автоматически при загрузке числа в стек сопроцессора. Исключение составляет расширенный формат.

Специальные численные значения

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

Денормализованные вещественные числа

Денормализовапные вещественное числа — это числа, которые меньше минималь­ного нормализованного числа для каждого вещественного формата. Поясним природу денормализованных чисел с использованием числовой шкалы. Напри­мер, для вещественного числа в расширенном формате диапазон представимых значений в сопроцессоре показан на числовой шкале рис. 19.11.

Нормализованные вещественные числа в расширенном формате

 

.О____________________| ————>

<—————————— 3.37- 10-4932 Денормализованные числа

Рис. 19.11.Положение денормализованных вещественных чисел на числовой шкале

Как нам уже известно, сопроцессор хранит числа и нормализованном виде. По мере приближения чисел к нулю, ему все труднее «вытягивать» их значения к нормализованному виду, то есть к такому виду, чтобы первой значащей цифрой мантиссы была единица. Размерность разрядной сетки, отведенной в форматах вещественных чисел сопроцессора, для представления характеристики не безгра­нична. Поэтому при определенных значениях числа в расширенном формате зна­чение характеристики становится равным нулю (рис. 19.11). Но на самом деле, число отлично от нуля, так как это все же не настоящий численный нуль. Таким образом, между истинным нулем и минимально представимым нормализованным числом есть еще бесконечное количество очень маленьких чисел. Это и есть так называемые денормализованные числа. Они имеют нулевой порядок и ненулевую мантиссу. Диапазон представимых в сопроцессоре денормализованных чисел не безграничен, так как количество разрядов мантиссы ограниченно (рис. 19.12):

Рис. 19.12.Диапазон представимых в сопроцессоре денормализованных чисел

Вопрос о том, каким образом сопроцессор реагирует на появление денормализо­ванных значений, будет рассмотрен в конце урока. При формировании денормализованного значения в некотором регистре стека, в соответствующем этому ре­гистру теге регистра twr формируется специальное значение (10).

Нуль

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

Значение истинного нуля может иметь знак (рис. 19.13), что, впрочем, не влияет на его восприятие командами сопроцессора. Если необходимо определить знак нуля, то используйте команду fxam. В результате работы этой команды в бит c1 регистра swr заносится знак операнда. При загрузке нуля в регистр стека, в соот­ветствующем теге регистра twr формируется специальное значение (01).

Значение нуля может быть сформировано в результате возникновения ситуации анти переполнения (см. ниже), а также при работе команд с нулевыми операндами.








Дата добавления: 2015-04-15; просмотров: 3199;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.013 сек.