Каждое вещественное число имеет мантиссу, порядок и знаковый разряд. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Каждое вещественное число имеет мантиссу, порядок и знаковый разряд.



Для типа Double мантисса занимает младшие 52 бита, далее запятая и перед запятой должен стоять бит целой части мантиссы, но поскольку она всегда равна 1, то данный бит не требуется и соответствующий разряд отсутствует в памяти (но он подразумевается). Значение порядка в ЭВМ хранится в виде смещенного числа, т.е. к настоящему значению порядка перед записью его в память прибавляется смещение. Смещение выбирается так, чтобы минимальному значению порядка соответствовал нуль. Например, для типа Double порядок занимает 11 бит (211 =2048) и имеет диапазон от 2-1023 до 21023, поэтому смещение равно 1023(10) = 1111111111(2). Бит с номером 63 указывает на знак числа.


Алгоритм для получения представления действительного числа в памяти ЭВМ:

1. перевести модуль данного числа в двоичную систему счисления;

2. нормализовать двоичное число, т.е. записать в виде M × 2 p, где M — мантисса (ее целая часть равна 1(2)) и p — порядок, записанный в десятичной системе счисления;

3. прибавить к порядку смещение и перевести смещенный порядок в двоичную систему счисления;

Учитывая знак заданного числа (0 — положительное; 1 — отрицательное), выписать его представление в памяти ЭВМ.

Пример 1. Запишем код числа -312,3125 для типа double.

Двоичная запись модуля этого числа имеет вид 100111000,0101.

2. Имеем 100111000,0101 = 1,001110000101 × 28.

3. Получаем смещенный порядок 8 + 1023 = 1031. Далее имеем 1031(10) = 10000000111(2).

Окончательно

     
  62..52 51..0

1100 0000 0111 0011 1000 0101 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000b=C073850000000000(16).

 

Пример 2. Из кода действительного числа получить само число. Пусть дан код 3FEC600000000000(16) или

     
  62..52 51..0

1. Это код положительного числа, поскольку в разряде с номером 63 записан нуль. Получим порядок этого числа: 01111111110(2) = 1022(10); 1022 - 1023 = -1.

2. Число имеет вид 1,1100011 × 2-1 или 0,11100011.

Переводом в десятичную систему счисления получаем 0,88671875.

 


Лекция №6. Работа с сопроцессором. Команды для работы с FPU. Работа с FPU.

Вещественные форматы, используемые в процессорах Intel:

· короткое вещественное ( Single ): бит 31 — знак мантиссы, биты 30 –23 — 8-битный порядок + 127 (27-1), биты 22–0 — 23-битная мантисса без первой цифры;

· длинное вещественное ( Double ): бит 63 — знак мантиссы, биты 62–52 — 11-битный порядок + 1023 (210-1), биты 51 – 0 — 52-битная мантисса без первой цифры;

· расширенное вещественное ( Extended ): бит 79 — знак мантиссы, биты 78–64 — 15-битный порядок + 16 383 (214-1), биты 63–0 — 64-битная мантисса с первой цифрой (то есть бит 63 равен 1).


Регистры FPU

FPU предоставляет восемь регистров для хранения данных и пять вспомогательных регистров.

Регистры данных (R0 – R7) рассматриваются как стек, вершина которого называется ST(0), а более глубокие элементы — ST(1), ST(2) и так далее до ST(7).

 

 

Рис. 13. Регистры FPU

 

К регистрам R0 – R7 нельзя обращаться напрямую, по именам, но если процессор поддерживает расширение ММХ, то мантиссы, находящиеся в этих регистрах, становятся доступны, как ММ0 – ММ7.

Регистр состояний SR содержит слово состояния FPU:


Регистр управления CR:

Биты 15 – 13 — зарезервированы.

Бит 12 «IC» — управление бесконечностью (поддерживается для совместимости с 8087 и 80287 — вне зависимости от значения этого бита > ).

Биты 11 – 10 «RC» — управление округлением.

Биты 9 – 8 «PC» — управление точностью.

Биты 7 – 6 — зарезервированы.

Бит 5 «РМ» — маска неточного результата.

Бит 4 «UM» — маска антипереполнения.

Бит 3 «ОМ» — маска переполнения.

Бит 2 «ZM» — маска деления на ноль.

Бит 1 «DM» — маска денормализованного операнда.

Бит 0 «IM» — маска недействительной операции.

Биты RC определяют способ округления результатов команд FPU до заданной точности (табл. 10).

Таблица 10. Способы округления

Значение RC Способ округления
  к ближайшему числу
  к отрицательной бесконечности
  к положительной бесконечности
  к нулю

 

Биты PC определяют точность результатов команд FADD, FSUB, FSUBR, FMUL, FDIV, FDIVR и FSQRT (табл. 11).

Таблица 11. Точность результатов

Значение PC Точность результатов
  одинарная точность (32-битные числа)
  зарезервировано
  двойная точность (64-битные числа)
  расширенная точность (80-битные числа)

Регистр тегов TW содержит восемь пар бит, описывающих содержание каждого регистра данных.

Регистры FIP и FDP содержат адрес последней выполненной команды (кроме FINIT, FCLEX, FLDCW, FSTCW, FSTSW, FSTSWAX, FSTENV, FLDENV, FSAVE, FRSTOR и FWAIT) и адрес ее операнда соответственно и используются в обработчиках исключений для анализа вызвавшей его команды.



Поделиться:


Последнее изменение этой страницы: 2016-09-13; просмотров: 545; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.118.99 (0.006 с.)