Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1std_PrT.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
200.19 Кб
Скачать

1.6.2 Машинное представление вещественных типов данных.

В языке Turbo Pascal 7.0 имеется 5 вещественных типов данных, характеристики которых представлены в таблице 1.3.

Таблица 1.3.

Вещественные типы данных в языке TP 7.0.

Тип

Наименование

Разрядность

Диапазон

Количество значащих цифр

Байт

бит

Real

вещественный

6

48

2,910-39 …1,71038

11…12

Single

с одинарной точностью

4

32

1,510-45 …4,31038

7…8

Double

с двойной точностью

8

64

510-324 …1,710308

15…16

Extended

с повышенной точностью

10

80

3,410-4932 … 1,1104932

19…20

Comp

Сложный (целое в формате вещественного)

8

64

-9,21018…9,21018

19…20

Все эти типы, за исключением типа Real, требуют наличия сопроцессора и включения директив компилятора {$N+} (разрешение генерации кода для работы с сопроцессором) и/или {$E+} (разрешение программной эмуляции сопроцессора). Для программ разрабатываемых для работы в среде Windows директива {$E} не действует, так как Windows обеспечивает собственные подпрограммы эмуляции.

В состоянии {$N-}, которое устанавливается по умолчанию, генерируемый код выполняет все вычисления с вещественными типами программно, через вызов подпрограмм библиотеки исполняющей системы. Из-за соображений скорости и размера кода в этом состоянии допускаются только действия над переменными типа real. Любая попытка оттранслировать операторы, выполняющие действия над типами с одинарной точностью, с двойной точностью, с повышенной точностью и над сложными типами, вызовет сообщение об ошибке.

В

± ЗначащаяЧастьЧисла  2ПоказательСтепени

общем случае, все переменные вещественных типов хранятся в виде двоичного представления знака (+ или -), показателя степени и значащей части числа, т. е. в виде:

,

где значащая часть числа представляет собой отдельный бит слева от двоичной десятичной точки (то есть 0 <= ЗначащаяЧастьЧисла <= 2).

Р ассмотрим представление чисел типа real в памяти ЭВМ. Формат представления этих чисел:

Шестибайтовое (48-битовое) вещественное число (Real) подразделяется на три поля: s - знаковое поле (1 бит), f - значащая часть числа (39 бит) и показатель степени е (8 бит). В приведенной схеме слева расположены старшие значащие биты, а справа - младшие значащие биты. Самое левое значение хранится в самых старших адресах. Например, для значения вещественного типа e сохраняется в первом байте, f - в следующих пяти байтах, а s - в старшем значащем бите последнего байта. Значение v числа типа Real определяется с помощью выражения:

А

V = (-1)s  f  2e-129

налогично представляются и другие вещественные типы. Их форматы можно найти в документации фирмы Borland по языку Turbo Pascal 7.0

О собое место в группе вещественных типов занимает cложный тип (Comp), обладающий "гибридными" свойствами. С одной стороны, переменные и константы этого типа могут иметь только целые значения, но в отличии от других типов он не является порядковым. Восьмибайтовое (64-битовое) число сложного типа подразделяется на два поля:

Здесь msb означает более значащий бит (старшие разряды), а lsb - менее значащий (младшие разряды).

Значение v этого числа определяется с помощью выражений:

if (s = 1 and d = 0) then v = NaN

(NaN - неопределено), иначе v представляет собой 64-битовое значение, являющееся дополнением до двух.

В Delphi тип Real является альтернативным именем (синонимом) для типа Double, то есть он является 8-байтовым (64-х разрядным). Рассмотренному выше в Turbo Pascal 7.0 типу Real в Delphi соответствует тип Real48. В случае необходимости, с помощью соответствующей директивы компилятора можно разрешить Delphi считать ссылки на тип Real как на тип Real48.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]