Порядковые типы

Простые типы

Рис. 5. Типы данных в языке PASCAL

В программе объектом некоторого типа является константа или переменная. Значения, которые может принимать объект данного типа, называются константами типа. Во время выполнения программы для каждого объекта выделяется область оперативной памяти, называемая элементом хранения, в которой размещаются константы типа. Максимальное количество элементов в множестве, включающем все константы типа, называется мощностью типа. Мощность типа определяет размер элемента хранения объекта данного типа так, чтобы этот размер был достаточен для размещения любой константы типа. Формат внутреннего представления данных в элементе хранения определяется типом объекта.

В языке программирования за каждым простым типом закреплено имя. Любой простой тип можно задать перечислением констант этого типа. Простые типы, которые имеют счетное множество констант, называются ПОРЯДКОВЫМИ. Например, в PASCAL множество натуральных чисел 0,1,2,…,65535 образует тип WORD. Множество целочисленных констант в диапазоне –32768…32767 образует тип INTEGER. Соответствие между константами порядкового типа и их номерами в множестве констант типа устанавливается порядком перечисления констант.

Множество операций по обработке данных простых типов встроено в язык программирования. Для порядковых типов это операции сложения, вычитания, умножения, деления, инкремента, декремента, определения предшествующего и следующего элемента в множестве констант. К любому порядковому типу применима функция ORD(X), которая вычисляет порядковый номер объекта X. Для целых типов функция ORD(X) возвращает само значение X. Результатом ORD(X) является положительное целое число в диапазоне 0…1 для логического типа, 0…255 для символьного типа, 0…65535 для перечислимого типа.

Обозначим мощность типа POWER(имя_типа) (это наше собственное обозначение, в языках программирования подобная функция отсутствует). Для определения размера элемента хранения типа (в байтах) в языках программирования используется встроенная функция SIZEOF(имя_типа) или SIZEOF(имя_объекта_типа). Встроенные функции LOW(имя_типа) и HIGH(имя_типа) возвращают соответственно минимальное и максимальное значения констант порядкового типа.

ЦЕЛЫЕ ТИПЫ. Мощность типа WORDPOWER(WORD) = 65536 = 216. Размер элемента хранения переменной данного типа – SIZEOF(WORD) = 2(байта), т.к. 16 двоичных разрядов достаточно для того, чтобы закодировать любое значение из диапазона 0…65535. Например, число 2000 кодируется следующим образом:

2000 = 1024 + 512 + 256 + 128 + 64 + 16 = 210 + 29 + 28 + 27 + 26 + 24.


Ord(2000) = 2000.

Power(INTEGER) = 65536 = 216. Sizeof(INTEGER) = 2 (байта).

Положительные числа в элементе хранения типа INTEGER кодируются так же как и в элементе хранения типа WORD. Отрицательные числа в элементе хранения типа INTEGER представляются в дополнительном коде. Дополнительный код получается следующим образом:

¨ представить отрицательное число в виде двоичного значения со знаком,

¨ инвертировать двоичное представление числа, оставивив знаковый разряд без изменения,

¨ прибавить 1 к инвертированному числу,

¨ добавить знаковый бит к результату, полученному на предыдущем шаге.

Например, представим число –6 в дополнительном коде.

 
 


Ord(-6) = -6.

В таблице 1 приводятся названия целых типов, размер их элемента хранения и диапазон возможных значений, образующих множество констант типа.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: