Целые типы
Внутреннее представление Целые числа представляются в компьютере в двоичной системе счисления (отрицательные числа — в дополнительном коде, но для нас это не принципиально). В Паскале определены несколько целых типов данных, отличающиеся длиной и наличием знака: старший двоичный разряд либо воспринимается как знаковый, либо является обычным разрядом числа (табл. 1.5). Внутреннее представление определяет диапазоны допустимых значений величин (от нулей во всех двоичных разрядах до единиц). Таблица 1.5. Целые типы данных
Тип |
Название |
Размер |
Знак |
Диапазон значений |
integer |
Целое |
2 байта |
Есть |
–32 768 .. 32 767 (–215 .. 215–1) |
shortint |
Короткое целое |
1 байт |
Есть |
–128 .. 127 (–27 .. 27–1) |
byte |
Байт |
1 байт |
Нет |
0 .. 255 (0 .. 28–1) |
word |
Слово |
2 байта |
Нет |
0 .. 65 535 (0 .. 216–1) |
longint |
Длинное целое |
4 байта |
Есть |
–2 147 483 648 .. 2 147 483 647 (–231 .. 231–1) |
Первоначально в Паскале был всего один целый тип — integer, остальные добавлены впоследствии для представления больших величин или для экономии памяти. Например, нет смысла отводить 4 байта под величину, про которую известно, что все ее значения находятся в диапазоне от 0 до 100. Операции С целыми величинами можно выполнять арифметические операции (табл. 1.6). Результат их выполнения всегда целый (при делении дробная часть отбрасывается). Таблица 1.6. Арифметические операции для целых величин
Операция |
Знак операции |
Сложение |
+ |
Вычитание |
– |
Умножение |
* |
Деление |
div |
Остаток от деления |
mod |
К целым величинам можно также применять операции отношения, перечисленные в разделе “Логические типы” (см. с. ). Результат этих операций имеет логический тип, например результатом сравнения 3 < 8 будет значение true. Кроме того, к целым величинам можно применять поразрядные операции and, or, xor и not. При выполнении этих операций каждая величина представляется как совокупность двоичных разрядов. Действие выполняется над каждой парой соответствующих разрядов операндов: первый разряд с первым, второй — со вторым и т. д. Таблицы истинности операций приведены в разделе “Логические типы” на с. . Например, результатом операции 3 and 2 будет 2, поскольку двоичное представление числа 3 — 11, числа 2 — 10. Для работы с целыми величинами предназначены также и операции сдвига влево shl и вправо shr. Слева от знака операции указывается, с какой величиной будет выполняться операция, а справа — на какое число двоичных разрядов требуется сдвинуть величину. Например, результатом операции 12 shr 2 будет значение 3, поскольку двоичное представление числа 12 — 1100. Выполнив операцию 12 shl 1, то есть сдвинув это число влево на 1 разряд, получим 24. Освободившиеся при сдвиге влево разряды заполняются нулями, а при сдвиге вправо — знаковым разрядом. Стандартные функции и процедуры К целым величинам можно применять стандартные функции и процедуры, перечисленные в табл. 1.7. Таблица 1.7. Стандартные функции и процедуры для целых величин
Имя |
Описание |
Результат |
Пояснения |
|
|
|
|
Функции |
|||
abs |
Модуль |
Целый |
|x| записывается abs(x) |
arctan |
Арктангенс угла |
Вещественный |
arctg x записывается arctan(x) |
cos |
Косинус угла |
Вещественный |
cos x записывается cos(x) |
exp |
Экспонента |
Вещественный |
ex записывается exp(x) |
ln |
Натуральный логарифм |
Вещественный |
logex записывается ln(x) |
odd |
Проверка на четность |
Логический |
odd(3) даст в результате true |
pred |
Предыдущее значение |
Целый |
pred(3) даст в результате 2 |
sin |
Синус угла |
Вещественный |
sin x записывается sin(x) |
sqr |
Квадрат |
Целый |
x2 записывается sqr(x) |
sqrt |
Квадратный корень |
Вещественный |
Цx записывается sqrt(x) |
succ |
Следующее значение |
Целый |
succ(3) даст в результате 4 |
Процедуры |
|||
|
|
|
|
inc |
Инкремент |
|
inc(x) — увеличить х на 1 inc(x, 3) — увеличить х на 3 |
dec |
Декремент |
|
dec(x) — уменьшить х на 1 dec(x, 3) — уменьшить х на 3 |
ПРИМЕЧАНИЕ Различие между функцией и процедурой проявляется в способе вызова. Процедура вызывается отдельным оператором, а функция — в составе выражения. На с. был приведен пример вызова процедур readln и writeln.