МАШИННЫЕ ФОРМАТЫ ВЕЩЕСТВЕННЫХ ЧИСЕЛ
Для работы с вещественными числами компьютер приводит их к следующему нормализованному виду: ± 1.m2*2p , где m2 – двоичная мантисса числа, p – порядок и хранит их в следующем представлении:
Знак |
Характеристика |
Нормализованная мантисса |
Характеристика = Смещение + Порядок. (Характеристика целое неотрицательное число).
ФОРМАТ float (одинарный)
Смещение = 7Fh 1 – скрытый разряд
Знак |
Характеристика |
Нормализованная мантисса |
||||
31 |
30 |
… |
23 |
22 |
… |
0 |
Биты |
||||||
ФОРМАТ double (двойной)
Смещение = 3FFh 1 – скрытый разряд
Знак |
Характеристика |
Нормализованная мантисса |
||||
63 |
62 |
… |
52 |
51 |
… |
0 |
Биты |
||||||
ФОРМАТ longdouble (расширенный)
Смещение = 3FFFh Скрытого разряда нет
Знак |
Характеристика |
Нормализованная мантисса |
||||
79 |
78 |
… |
64 |
63 |
… |
0 |
Биты |
||||||
В памяти вещественные числа, также как и целые, хранятся в перевернутом виде по принципу "младший байт по младшему адресу". Размер пространства, которое компьютер использует для хранения Характеристики и Мантиссы, установлен стандартом IEEE 724-1985 и поддерживается всеми современными компьютерными архитектурами.
ТИПЫ ДАННЫХ СОПРОЦЕССОРА
ОБЫЧНЫЕ ДАННЫЕ
Типы данных |
Длина (бит) |
Диапазон |
Директива |
Целое слов |
16 |
-32768…32767 |
m16i dw 12345 |
Короткое целое |
32 |
-2147483648…2147483647 |
m32i dd 1234567 |
Длинное целое |
64 |
-9223372036854775808… 9223372036854775807 |
m64i dq 1234567 |
Упакованное двоично-десятичное |
80 |
-999999999999999999… 999999999999999999 |
bdu dt 12345678 |
Короткое вещественное |
32 |
1.175494351e-38… 3.402823466e+38 |
m32 dd 12.34567 m32 dd 12.34e4 |
Длинное вещественное |
64 |
2.225073858507201e-308… 1.7976931348623158e+308 |
m64 dq 12.34567 m64 dq 12.34e7 |
Расширенное вещественное |
80 |
3.3621031431120935063e-4932… 1.189731495357231765e+4932 |
m80 dt 12.34567 m80 dt 12.34e5 |
· Положительный ноль – все биты числа сброшены в ноль;
· Отрицательный ноль – знаковый бит равен 1, остальные биты числа сброшены в ноль;
· Положительная бесконечность – знаковый бит равен 0, все биты характеристики установлены в 1, а биты мантиссы сброшены в 0;
· Отрицательная бесконечность – знаковый бит равен 1, все биты характеристики установлены в 1, а биты мантиссы сброшены в 0;
· Денормализованные числа – все биты характеристики сброшены в 0. Эти числа позволяют представлять очень маленькие числа при вычислениях с расширенной точностью;
· Неопределенность – знаковый бит равен 1, все биты характеристики установлены в 1, первый бит мантиссы равен 1 (для 80-разрядных чисел первые два бита равны 11);
· Не-числа типа SNAN (сигнальное) – все биты характеристики установлены в 1, первый бит мантиссы равен 0 (для 80-разрядных чисел первые два бита равны 10), остальные биты мантиссы могут содержить 0 и 1;
· Не-числа типа QNAN (тихое) – все биты характеристики установлены в 1, первый бит мантиссы равен 1 (для 80-разрядных чисел первые два бита равны 11), остальные биты мантиссы могут содержать 0 и 1;
· Неподдерживаемое число – все остальные ситуации.
Для организации работы с арифметическим сопроцессором программисту доступны восемь десятибайтных регистров общего назначения, обозначаемых ST(0) – ST(7), организованные как стек. Эти регистры предназначены для хранения операндов и результатов арифметических операций. Регистр ST(0) или просто ST вершина стека - используется наиболее часто.
Вне зависимости от их исходного формата, данные, передаваемые на обработку в сопроцессор, преобразуются во внутреннее представление – расширенный формат вещественного числа, занимающее 80 бит, и записываются в один из регистров общего назначения.
Кроме регистров стека сопроцессор имеет три служебных регистра:
· Регистр состояния сопроцессора SWR (Status Word Register) – отражает информацию о текущем состоянии сопроцессора. Он содержит поля, которые позволяют определить, какой регистр является текущей вершиной стека сопроцессора, какие исключения возникли после выполнения последней команды, каковы особенности выполнения последней команды (аналог регистра флагов основного процессора).
· Управляющий регистр сопроцессора CWR (Control Word Register) – управляет режимом работы сопроцессора. С помощью этого регистра можно регулировать точность выполнения численных вычислений, управлять округлением, маскировать исключения.
· Регистр слова тегов TWR (Tags Word Register) – используется за контролем состояния каждого из регистров ST(0)-ST(7). Команды сопроцессора используют данный регистр, например, для того, чтобы определить возможность записи значение в эти регистры.
И два регистрауказателей: данных DPR (Data Pointer Register) и команд IPR (Instruction Pointer Register). Эти два 48 разрядных регистра используются для хранения адреса команды, вызвавшей исключительную ситуацию и адреса её операнда.
Процессор и сопроцессор являются двумя самостоятельными устройствами
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.