![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
В языке программирования за каждым простым типом закреплено имя. Любой простой тип можно задать перечислением констант этого типа. Простые типы, которые имеют счетное множество констант, называются ПОРЯДКОВЫМИ. Например, в 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 приводятся названия целых типов, размер их элемента хранения и диапазон возможных значений, образующих множество констант типа.
Таблица 1. Целые типы
Название | Размер элемента хранения, байт | Множество констант |
Byte | 0…255 | |
ShortInt | -128…127 | |
Word | 0…65535 | |
Integer | -32768…32767 | |
LongInt | -2147483648…2147483647 |
ЛОГИЧЕСКИЙ ТИП. Значениями логического типа может быть одна из предварительно объявленных констант FALSE (ложь) и TRUE (истина).
Power(BOOLEAN) = 2, Sizeof(BOOLEAN) = 1 (байт),
Ord(False) = 0, Ord(True) = 1.
СИМВОЛЬНЫЙ ТИП. Значениями символьного типа является множество всех символов компьютера. Каждому символу приписывается целое число в диапазоне 0..255. Это число служит кодом внутреннего представления символа. Первая половина символов с кодами 0..127 соответствует стандарту ASCII. Вторая половина символов с кодами 128..255 не ограничена жесткими рамками стандарта и может меняться на компьютерах разных типов.
Power(CHAR) = 256, Sizeof(CHAR) = 2 (байта), Ord(‘F’) = 70;
ПОЛЬЗОВАТЕЛЬСКИЙ ПЕРЕЧИСЛИМЫЙ ТИП (обозначим Enum_Type) задает некоторое подмножество целого типа WORD и может рассматриваться как компактное объявление группы N именованных целочисленных констант со значениями 0,1,…65535. Например,
TypeNote= (do, re, mi, fa, sol, la, si).
Так, значение константы с именем fa и соответственно ее порядковый номер в множестве констант типа Note равны 3, т.е. Ord(fa) = 3.
Power (Enum_Type) = N, N <= 65536.
Sizeof(Enum_Type) = 1 + log2(Power (Enum_Type) – 1) DIV 8.
Power(Note) = 7, Sizeof(Note) = 1 (байт).
Для ограничения полного множества значений некоторого порядкового типа используются отрезки типа. ОТРЕЗОК ТИПА ИЛИ ДИАПАЗОН (обозначим Diap_Type) – упорядоченное подмножество полного множества значений любого порядкового типа, исключая диапазон. Тип-диапазон задается границами своих значений (обозначим их MIN и MAX) внутри базового типа:
Type Diap_Type = MIN.. MAX;
MIN = Low (Diap_Type), MAX = High (Diap_Type).
Power (Diap_Type) = MAX - MIN + 1 <= 65536.
Sizeof(Diap_Type) = 1 + log2(Power (Diap_Type) – 1) div 8.
Например,
Type Otr = 10..19;
Low (Otr) = 10, High(Otr) = 19, Ord(15) = 15,
Power(Otr) = 10, Sizeof(Otr) = 1 (байт).
Дата публикования: 2014-11-26; Прочитано: 303 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!