
- •1.1. Цель работы.
- •1.2. Задание на подготовку к лабораторной работе.
- •1.3. Порядок выполнения работы.
- •1.4. Варианты заданий и условия задач.
- •1.5. Вопросы для самопроверки.
- •1.6. Методические указания.
- •1.6.1 Машинное представление целочисленных типов данных.
- •1.6.2 Машинное представление вещественных типов данных.
- •1.6.3 Машинное представление символьных типов данных.
- •1.6.4 Машинное представление логических (булевских) типов данных.
- •1.6.5 Машинное представление скалярных типов данных.
1.6.2 Машинное представление вещественных типов данных.
В языке Turbo Pascal 7.0 имеется 5 вещественных типов данных, характеристики которых представлены в таблице 1.3.
Таблица 1.3.
Вещественные типы данных в языке TP 7.0.
Тип |
Наименование |
Разрядность |
Диапазон |
Количество значащих цифр |
|
Байт |
бит |
||||
Real |
вещественный |
6 |
48 |
2,910-39 …1,71038 |
11…12 |
Single |
с одинарной точностью |
4 |
32 |
1,510-45 …4,31038 |
7…8 |
Double |
с двойной точностью |
8 |
64 |
510-324 …1,710308 |
15…16 |
Extended |
с повышенной точностью |
10 |
80 |
3,410-4932 … 1,1104932 |
19…20 |
Comp |
Сложный (целое в формате вещественного) |
8 |
64 |
-9,21018…9,21018 |
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
О
собое
место в группе вещественных типов
занимает 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.