Битовая или поразрядная арифметика введена в ObjectPascal для обеспечения возможности работы с двоичными разрядами (битами). Операции битовой арифметики применимы только к целым типам.
Первая группа операций - логические операции not, and, or и xor.
Операция not является одноместной, она изменяет каждый бит целого числа на обратный.
Операции and, or и xor - двуместные, операнды этих операций – целые величины одинаковой длины. Операции выполняются попарно над всеми двоичными разрядами операндов.
Вторая группа операций - это операции сдвига влево shl и сдвига вправо shr:
I shl N
I shr N.
Эти операции сдвигают двоичную последовательность значения I влево или вправо на N двоичных разрядов. При этом биты, уходящие за пределы разрядной сетки, теряются, а освободившиеся двоичные разряды заполняются нулями. При сдвиге вправо отрицательных значений освободившиеся разряды заполняются единицами.
Вещественные типы данных определяют данные, которые реализуются подмножеством вещественных чисел, допустимых в ЭВМ.
Вещественные типы в TurboPascal
Тип
Диапазон значений
Количество цифр мантиссы
Требуемая память, байт
Real
2.9e-39 .. 1.7e+38
Single
1.5e-45 .. 3.4e+38
Double
5.0e-324 .. 1.7e+308
Extended
3.4e-4932 .. 1.1e+4932
Comp
-9.2e+18 .. 9.2e+18
Вещественные типы в ObjectPascal
Тип
Диапазон значений
Количество цифр мантиссы
Требуемая память, байт
Real48 *
2.9e-39 .. 1.7e+38
11–12
Single
1.5e–45 .. 3.4e+38
7–8
Double (Real)
5.0e–324 .. 1.7e+308
15–16
Extended
3.6e–4951 .. 1.1e+4932
19–20
Comp *
–2^63+1 .. 2^63 –1
19–20
Currency
–922337203685477.5808.. 922337203685477.5807
19–20
* - устаревшие типы данных, оставленные для совместимости с TurboPascal, рекомендуется неиспользовать.
Над вещественными операндами можно выполнять следующие арифметические операции, дающие вещественный результат:
Функция Frac(X) возвращает дробную часть X, функция Int(X) – целую часть X.
Безаргументная функция Pi возвращает значение числа Пи действительного типа.
К аргументам действительного типа применимы также функции Trunc(X) и Round(X), дающие целый результат. Первая из них выделяет целую часть действительного аргумента путем отсечения дробной части, вторая округляет аргумент до ближайшего целого.