Главная » Free Pascal » Внешнее представление числовых констант

0

Почти в каждой программе, написанной на том или ином алгоритмическом языке, встречаются числовые константы, которые используются как операнды арифметических или логических выражений, как начальные значения переменных числового типа, как значения именованных числовых констант, как границы ин- дексов массивов и т. п. В любом из перечисленных случаев используется термин "литеральная константа", т. е. константа, записанная с помощью некоторого на-

бора символов (литер). По внешней форме записи литеральной числовой констан- ты компилятор принимает решение о машинном формате ее хранения в оператив- ной памяти компьютера.

Для записи целочисленных десятичных констант используются десятичные циф- ры (0, 1, 2, …, 9) и знаки числа (+, –). Решение о выборе подходящего числового фор- мата компилятор принимает, руководствуясь самым простым правилом — для хра- нения целочисленной литеральной константы выбирается самый маленький диапазон, в котором константа может быть представлена. Приведенная в листинге 4.1 программа демонстрирует это правило, используя стандартную функцию SizeOf.

   Листинг 4 .1 .  Программа  types                                                

program types; begin

writeln(1:8 ,’ ‘,SizeOf(1));

writeln(-1:8 ,’ ‘,SizeOf(-1));

writeln(255:8,’ ‘,SizeOf(255));

writeln(-255:8,’ ‘,SizeOf(-255)); writeln(32767:8,’ ‘,SizeOf(32767)); writeln(-32767:8,’ ‘,SizeOf(-32767)); writeln(32769:8,’ ‘,SizeOf(32769)); writeln(-32769:8,’ ‘,SizeOf(-32769)); writeln(65536:8,’ ‘,SizeOf(65536)); writeln(-65536:8,’ ‘,SizeOf(-65536)); readln;

end.

Результаты ее работы с комментариями, дописанными вручную, таковы:

1 1    // Тип Byte (нет знака)

-1 1    // Тип ShortInt (есть знак)

255 1    // Тип Byte

-255 2    // Тип SmallInt

32767 2    // Тип SmallInt

-32767 2    // Тип SmallInt

32769 2    // Тип Word

-32769 4    // Тип Integer

65536 4    // Тип LongWord

-65536 4    // Тип Integer

Free Pascal допускает использование шестнадцатеричных, восьмеричных и двоичных целочисленных констант без знака. Если первый тип констант был при- сущ языку Паскаль изначально, то два следующих типа перекочевали во Free Pascal из других алгоритмических языков.

Записи шестнадцатеричной константы предшествует символ $, вслед за кото- рым располагается комбинация десятичных цифр (0, 1, 2, …, 9), прописных (A, B, C, D, E, F) или строчных (a, b, c, d, e, f) букв, используемых для обозначения чисел от 10 до 15. Каждая пара шестнадцатеричных цифр, начиная с младших, занимает в оперативной памяти один байт. Собственно этим и определяется машинный фор- мат шестнадцатеричных констант — 1, 2, 4 или 8 байт. Недостающие старшие раз- ряды дополняются нулями. Например:

A    // Тип Byte, соответствующее десятичное значение – 26

$a     // Дополняется до

Почти в каждой программе, написанной на том или ином алгоритмическом языке, встречаются числовые константы, которые используются как операнды арифметических или логических выражений, как начальные значения переменных числового типа, как значения именованных числовых констант, как границы ин- дексов массивов и т. п. В любом из перечисленных случаев используется термин "литеральная константа", т. е. константа, записанная с помощью некоторого на-

бора символов (литер). По внешней форме записи литеральной числовой констан- ты компилятор принимает решение о машинном формате ее хранения в оператив- ной памяти компьютера.

Для записи целочисленных десятичных констант используются десятичные циф- ры (0, 1, 2, …, 9) и знаки числа (+, –). Решение о выборе подходящего числового фор- мата компилятор принимает, руководствуясь самым простым правилом — для хра- нения целочисленной литеральной константы выбирается самый маленький диапазон, в котором константа может быть представлена. Приведенная в листинге 4.1 программа демонстрирует это правило, используя стандартную функцию SizeOf.

   Листинг 4 .1 .  Программа  types                                                

program types; begin

writeln(1:8 ,’ ‘,SizeOf(1));

writeln(-1:8 ,’ ‘,SizeOf(-1));

writeln(255:8,’ ‘,SizeOf(255));

writeln(-255:8,’ ‘,SizeOf(-255)); writeln(32767:8,’ ‘,SizeOf(32767)); writeln(-32767:8,’ ‘,SizeOf(-32767)); writeln(32769:8,’ ‘,SizeOf(32769)); writeln(-32769:8,’ ‘,SizeOf(-32769)); writeln(65536:8,’ ‘,SizeOf(65536)); writeln(-65536:8,’ ‘,SizeOf(-65536)); readln;

end.

Результаты ее работы с комментариями, дописанными вручную, таковы:

1 1    // Тип Byte (нет знака)

-1 1    // Тип ShortInt (есть знак)

255 1    // Тип Byte

-255 2    // Тип SmallInt

32767 2    // Тип SmallInt

-32767 2    // Тип SmallInt

32769 2    // Тип Word

-32769 4    // Тип Integer

65536 4    // Тип LongWord

-65536 4    // Тип Integer

Free Pascal допускает использование шестнадцатеричных, восьмеричных и двоичных целочисленных констант без знака. Если первый тип констант был при- сущ языку Паскаль изначально, то два следующих типа перекочевали во Free Pascal из других алгоритмических языков.

Записи шестнадцатеричной константы предшествует символ $, вслед за кото- рым располагается комбинация десятичных цифр (0, 1, 2, …, 9), прописных (A, B, C, D, E, F) или строчных (a, b, c, d, e, f) букв, используемых для обозначения чисел от 10 до 15. Каждая пара шестнадцатеричных цифр, начиная с младших, занимает в оперативной памяти один байт. Собственно этим и определяется машинный фор- мат шестнадцатеричных констант — 1, 2, 4 или 8 байт. Недостающие старшие раз- ряды дополняются нулями. Например:

$1A    // Тип Byte, соответствующее десятичное значение – 26

$a     // Дополняется до $0a, тип – Byte

$123   // Дополняется до $0123, тип – Word

Записи восьмеричной константы предшествует символ &, вслед за которым располагается комбинация цифр от 0 до 7. Каждая восьмеричная цифра в опера- тивной памяти заменяется тройкой двоичных разрядов, а старшие биты, допол- няющие число до границы байта, заполняются нулями:

&17    // Тип Byte, четыре старших бита дополнены нулями

&723   // Тип Word, семь старших битов дополнены нулями

Записи двоичной константы предшествует символ %, вслед за которым распола- гается комбинация двоичных цифр (0, 1):

%111   // Тип Byte, пять старших битов дополнены нулями

Внешнее представление вещественной десятичной константы отличается от целого числа тем, что в записи могут присутствовать:

± точка, отделяющая целую часть числа от дробной;

± порядок числа, начинающийся с большой (E) или малой (e) латинской буквы, вслед за которой располагается значение порядка со знаком.

В записи вещественного числа может присутствовать либо одна из этих состав- ляющих, либо обе одновременно. Например:

3. (или 3.0) 3E0 (или 3e0) 3.14

0.314E1 (или 0.314E+1)

31.4e-1 (или 31.4E-1)

Источник: Кетков, Ю. Л., Свободное программное обеспечение. FREE PASCAL для студентов и школьников, Ю. Л. Кетков, А. Ю. Кетков. — СПб.: БХВ-Петербург, 2011. — 384 с.: ил. + CD-ROM — (ИиИКТ)

a, тип – Byte

$123   // Дополняется до $0123, тип – Word

Записи восьмеричной константы предшествует символ &, вслед за которым располагается комбинация цифр от 0 до 7. Каждая восьмеричная цифра в опера- тивной памяти заменяется тройкой двоичных разрядов, а старшие биты, допол- няющие число до границы байта, заполняются нулями:

&17    // Тип Byte, четыре старших бита дополнены нулями

&723   // Тип Word, семь старших битов дополнены нулями

Записи двоичной константы предшествует символ %, вслед за которым распола- гается комбинация двоичных цифр (0, 1):

%111   // Тип Byte, пять старших битов дополнены нулями

Внешнее представление вещественной десятичной константы отличается от целого числа тем, что в записи могут присутствовать:

± точка, отделяющая целую часть числа от дробной;

± порядок числа, начинающийся с большой (E) или малой (e) латинской буквы, вслед за которой располагается значение порядка со знаком.

В записи вещественного числа может присутствовать либо одна из этих состав- ляющих, либо обе одновременно. Например:

3. (или 3.0) 3E0 (или 3e0) 3.14

0.314E1 (или 0.314E+1)

31.4e-1 (или 31.4E-1)

Источник: Кетков, Ю. Л., Свободное программное обеспечение. FREE PASCAL для студентов и школьников, Ю. Л. Кетков, А. Ю. Кетков. — СПб.: БХВ-Петербург, 2011. — 384 с.: ил. + CD-ROM — (ИиИКТ)

По теме:

  • Комментарии