Типы данных. Системы счисления. Перевод чисел из одной системы счисления в другую. Типы данных и форматы их представления, страница 5

Модуль с плавающей точкой (FPU) поддерживает работу с 80-битными упакованными целыми двоично-десятичными числами со знаком. В этом типе данных можно записать число, имеющее до 18 десятичных цифр. Почему не 20, ведь имеется десять байт? Дело в том, что старший байт целиком отводится для хранения знака, который хранится в в старшем бите этого байта.

2.2.2.2. Вещественные числа

Существует два способа представления вещественных данных в форме с фиксированной и с плавающей точкой.

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

Значения, которые могут быть представлены таким образом, будет попадать на отрезок значений от двоичного кода +1111111.11111111 = 127.9960937510, до двоичного кода –1111111.11111111 = -127.9960937510.

Второй способ представления предполагает, что двоичное представление числа с дробной частью приводится к нормализованному виду m*10k, такому, что 12£|m|<102. Так, например, (1/3)10 = 0.01010101012 = (1.01010101*10-10)2. Величину m принято называть мантиссой числа, а значение k - его порядком.

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

Проведем сравнение с первым способом представления вещественных чисел. Предположим, что под знак числа отводится 15-й бит, под знак порядка и порядок – биты с 14 по10, а оставшиеся биты с 0 по 9 под мантиссу, то интервал представления будет от (+1.1111111111*10+1111)2 до (-1.1111111111*10+1111)2 или от (+2047*25)10 до –6550410.

На самом деле архитектура рассматриваемых нами машин предполагает существование трех форматов представления чисел с плавающей точкой: короткое вещественное (длиной 4 байта), длинное вещественное (длиной 8 байт) и расширенное вещественное (длиной 10 байт). При этом выделенная под представление числа память имеет следующую структуру:

Вещественное

Знак числа

Порядок

Смещение

Мантисса

Директива

Короткое

31

30-23

127

22-0

dd

Длинное

63

62-52

1023

51-0

dq

Расширенное

79

78-64

16383

63-0

dt

Знак числа стандартный: равен 0, если число положительное, или 1 – если число отрицательное. Дополнительный код для записи отрицательной мантиссы не используется. Порядок представляется положительным числом, поэтому нулевому порядку соответствует значение приведенного в таблице смещения.

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

2.2.3. Указатели на память

Указатели это переменные, хранящие адреса. Указатели могут быть ближними (внутрисегментными) и внешними (межсегментными). В реальном режиме работы процессора ближний указатель занимает 16 бит и хранит смещение в байтах от начала сегмента, а дальний указатель занимает 32 бита и хранит полный логический адрес (сегмент (16 бит): смещение (16 бит)). В защищенном режиме работы процессора ближний указатель занимает 32 бита и хранит смещение в байтах от начала сегмента, а дальний указатель занимает 48 бит и хранит логический адрес в виде (селектор (16 бит) : смещение (32 бита)).

2.2.4. Битовое поле

Битовое поле – является непрерывной последовательностью бит, в которой каждый бит является независимым и может рассматриваться как отдельная переменная. Битовое поле может начинаться с любого бита любого байта и содержать до 32 битов.

2.2.5. Строки (цепочки)

Строки это непрерывные последовательности бит, байт, слов или двойных слов. Битовые строки могут начинаться с любого бита и могут содержать до 232 - 1 бит. Байтовые строки содержат байты, слова или двойные слова и быть длиной от 0 до 232 - 1 байт.