§3.2. Вещественные типы В Паскале есть только один вещественный тип – Real. В Турбо-Паскале это группа из пяти типов, обозначающих множества вещественных чисел в разных диапазонах и с различной точностью, ориентированных на представление информации в конкретных процессорах – фирмы Intel. Их характеристики приведены в табл. 3.2.
Таблица 3.2. Вещественные типы данных
Обозначение типа
| Диапазон значений
| Число десятичных цифр мантиссы
| Размер памяти в байтах
| Real
| 2.9*10-39 ... 1.7*10+38
| 11-12
| 6
| Single
| 1.5*10-45 ... 3.4*10+38
| 7-8
| 4
| Double
| 5.0*10-324 ... 1.7*10+308
| 15-16
| 8
| Extended
| 3.4*10-4932 ... 1.1*10+4932
| 19-20
| 10
| Comp
| -9.2*10+18 ...9.2*10+18
| 19-20
| 8
|
Использование последних четырех типов возможно только с использованием математического сопроцессора (должна быть включена соответствующая опция транслятора). Тип Comp хотя и считается вещественным, но на самом деле содержит целые числа из весьма большого диапазона.
Вещественные константы имеют две формы представления: с фиксированной и плавающей точкой. В первом случае число представляется как целая и дробная часть:
[<знак>]<целая часть>.<дробная часть>
Наличие точки является признаком вещественного типа числа. В представлении с плавающей точкой, или экспоненциальном, число условно разбивается на две части: мантиссу и порядок (иначе называемый характеристикой), поэтому в общем виде число выглядит как:
[<знак мантиссы>]<целая часть мантиссы> [.<дробная часть мантиссы>] E [<знак порядка>]<порядок>
Здесь буква Е является разделителем, отделяющим мантиссу от порядка или характеристики. Числа представляются только в десятичной системе счисления, например
1234.5610 = 1.23456E3 ( 1,23456103) = 1234.56E0 ,
то есть положение десятичной точки зависит от значения порядка и может изменяться.
Таким образом, признаком вещественного числа является наличие точки или разделителя. Так, число «единица» может быть представлено в трех разных форматах:
1Е0 – вещественное число с плавающей точкой;
1.0 – вещественное число с плавающей точкой;
1 – целое число.
Над вещественными значениями допустимы следующие операции:
+ сложение;
- вычитание;
* умножение;
/ деление.
Все они дают вещественный результат, если хотя бы один операнд вещественный.
Применение операций отношения дает логический результат.
§3.3. Логический тип Логический тип основан на правилах Булевой алгебры, широко используемой в цифровой электронике. Этот тип определяет всего два значения True (истина) и False (ложь), которые и являются константами. Описывается этот тип словом Boolean, определенным как
Type Boolean = (False,True);
Над значениями логического типа определены следующие операции:
NOT – «НЕ», логическое отрицание или инверсия, в отличие от остальных выполняется над одним операндом (унарная операция);
OR – «ИЛИ», логическое сложение или дизъюнкция;
AND – «И», логическое умножение или конъюнкция;
XOR – «исключающее ИЛИ», сложение по модулю 2 (в стандартном Паскале отсутствует). Пусть А и В – логические значения, тогда результат операций будет определяться по табл. 3.3:
Таблица 3.3. Логические операции
А
| В
| not A
| A or B
| A and B
| A xor B
| True
| True
| False
| True
| True
| False
| True
| False
| False
| True
| False
| True
| False
| True
| True
| True
| False
| True
| False
| False
| True
| False
| False
| False
|
В Паскале, как и в цифровой электронике, True кодируется единицей, а False – нулем (0 – низкое напряжение, 1 – высокое; при использовании обратной логики – наоборот). Поэтому логические операции разрешены не только над логическими значениями, но и над целыми, представляемыми в двоичной системе счисления. Например, если А=21 (101012), а В=9 (10012), и они описаны как байты, то:
not A = 111010102 = 23410
A or B = 000111012 = 2910
A and B = 00000001
Обычно их используют над беззнаковыми целыми типа Byte или Word. Шесть операций отношения или сравнения:
> < = ,
применимые ко всем простым типам и многим структурированным, всегда дают логический результат. Более того, и над логическими значениями допускается выполнение операций отношения:
True > False True,
True < False False.
Возможны даже такие записи:
Var i:boolean;
...
For i:=False to True do
<оператор>;
Здесь оператор выполнится два раза, сначала со значением i = False , затем i = True.
|