русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Целые типы данных.


Дата добавления: 2014-11-27; просмотров: 1410; Нарушение авторских прав


Значениями переменных целого типа являются элементы ограниченного подмножества целых чисел.

В Турбо Паскале имеется пять целочисленных типов данных: shortint, byte, integer, word и longint.

Тип shortint (short intеger – короткое целое) обозначает целочисленную переменную длиной один байт со знаком. Биты однобайтного поля памяти нумеруются в последовательности 0, 1, 2, 3, 4, 5, 6, 7. Нулевой бит – это знак числа: 0 – «+», 1 – «-». Следовательно, значение числа определяется семью двоичными цифрами. Число типа shortint изменяется в пределах -128 .. 127 (минимальное значение 100000002 = -12810, см. раздел «Представление информации в ПЭВМ»).

Тип byte – это короткое целое длиной один байт без знака (все восемь бит - двоичные цифры), пределы изменения 0 .. 255.

Тип integer определяет целое число длиной два байта со знаком. Пределы изменения –от –32768 до 32767. Этому типу соответствует предописанная константа MaxInt, равная максимальному значению числа: MaxInt = - 1 = 32767 .

Тип word – это целое длиной два байта без знака, пределы изменения 0 .. 65535.

Тип longint - длинное целое размером 4 байта со знаком, пределы изменения

- 2 147 483 648 .. 2 147 483 647.

Для типа longint предопределена константа MaxLongint, равная - 1 = 2147483647.

 

Для целых значений допустимы следующие арифметические операции:

+ сложение;

- вычитание;

* умножение;

divделение нацело (целая часть от деления);

modостаток от деления.

 

Пример 2.

19 div5 = 3; 19 mod 5 = 4

Очевидно, что a mod b = a - (a div b) × b

 

В арифметическом выражении не могут стоять рядом два знака операции. Например, нельзя писать a * -b. Здесь должно быть a * (-b).

 

Старшинство операций:

1) выражения в скобках;

2) *, div, mod (операции типа умножения);



3) +, - (операции типа сложения).

Операции одинакового старшинства выполняются слева направо.

 

Пример 3.

5 + 3 * 7 div 4 - 17 mod 3 = 5 + 5 - 2 = 8

 

Примечание. На машинном уровне для целочисленных переменных может быть использована лишь одна операция деления, но ее результат записывается в два различных регистра (регистр – это быстродействующая ячейка памяти): в один регистр – частное, во второй – остаток от деления. Тогда в Паскаль-программе содержимое первого регистра воспринимается как результат операции div , а второго – как результат операции mod.

 

Операции возведения в степень в Паскале нет. Для целых показателей степени эта операция может быть заменена многократным умножением. Более эффективный способ программной реализации операции возведения в степень рассмотрен в разделе «Вычисление степенной функции».

 

Целый результат дают следующие предописанные функции:

1) abs(i) - абсолютное значение целого аргумента i;

2) sqr(i) - квадрат значения целого аргумента i;

3) trunc(R) - целая часть вещественного значения R;

4) round(R) - целое значение, ближайшее к вещественному значению R.

Пример 4.

trunc(3.3) = 3; round(3.3) = 3;

trunc(3.5) = 3; round(3.5) = 4;

trunc(3.8) = 3; round(3.8) = 4;

trunc(-3.3) = -3; round(-3.3) = -3;

trunc(-3.8) = -3; round(-3.8) = -4.

 

Следовательно,

trunc(x) = sign(x) × trunc(abs(x)); round(x) = sign(x) × round(abs(x)),

где sign(x) = 1 при x > 0, sign(x) = 0 при x = 0 и sign(x) = -1 при x < 0.

 

Если i - целое, то succ(i) = i + 1; pred(i) = i - 1; ord(i) = i .

 

Целочисленным переменным можно присваивать значения не только десятичных, но и шестнадцатеричных констант. Отрицательные значения можно задавать, используя знак "-" или дополнительный код числа. В этом смысле приведенные ниже операторы для переменных i, k и l эквивалентны.

 

i:=-$5D; i:=$A3;

k:=-$7C0F; k:=$83F1;

l:=-$2BF01400; l:=$C40FEC00 .

 

Целочисленные переменные могут рассматриваться как битовые последовательности. В связи с этим к ним применимы следующие операции:

 

Shl k (Shift Left) – сдвиг влево на k разрядов;

Shr k (Shift Right) – сдвиг вправо на k разрядов;

Not – отрицание;

And – логическое умножение;

Or – логическое сложение;

Xor – исключающее ИЛИ.

 

При сдвиге влево разряды, выходящие за пределы разрядной сетки, теряются, а справа в число добавляется k нулевых бит. Аналогичная работа выполняется при сдвиге вправо.

Для положительных чисел операции «shl k» и «shr k» эквивалентны соответственно умножению и делению на .

 

Пример 5

Varm,n,p : integer;

................

p:=100; m:=p shl 2; n:=p shr 2;

Получим: m = 400; n = 25.

В двоичном представлении:

p = 0000 0000 0110 0100;

m = 0000 0001 1001 0000; n = 0000 0000 0001 1001.

 

Логические операции not, and, or, xor выполняются поразрядно (см. пример 5 в разделе «Представление информации в ПЭВМ»).

 

3. Символьный тип данных (типchar). Обозначение char - это сокращение слова character (символ).

Значениями переменных символьного типа являются элементы конечного и упорядоченного множества символов. Это значение обозначается одним символом, заключенным в апострофы.

 

Пример 6. 'A', 'a', '8', '''' (апостроф пишется дважды).

 

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

1) Десятичные цифры от '0' до '9' упорядочены в соответствии с их значениями и записаны одна за другой. Следовательно,

succ('5') = '6'; pred('5') = '4' .

2) Имеются все прописные буквы латинского алфавита от 'A' до 'Z'. Это множество упорядочено по алфавиту, но не обязательно связно. Следовательно, в любой реализации должно выполняться 'I' < 'J', но может не выполняться succ('I') = 'J'.

3) Могут быть строчные буквы латинского алфавита от 'a' до 'z'. Если это так, то это множество букв упорядочено по алфавиту, но не обязательно связно.

В таблице ASCII заданы как большие, так и малые латинские буквы, причем их последовательность непрерывная.

 

Для символьного типа определены две взаимно обратные функции преобразования ord и chr:

k = ord(ch) - порядковый номер символа ch;

ch = chr(k) - символ с порядковым номером k.

Очевидно, что

chr ( ord ( ch ) ) = ch ; ord ( chr ( k ) ) = k .

В последнем случае должно быть k = 0 .. 255 .

 

Рассмотрим содержательный смысл функций ord и chr на машинном уровне. Как уже отмечалось, внутреннее представление символа в байте памяти - это его порядковый номер по таблице ASCII. Например, для буквы "Ю" имеем #158, тогда содержимое байта равно 9E16 = 100111102 .

Примечание. «#» - это порядковый номер символа в таблице ASCII.

 

Если байт, содержащий значение 10011110, используется в программе при выводе результатов как символ, то печатается буква "Ю"; если этот байт используется как число, то печатается значение 158. Следовательно, функции ord и chr никакого преобразования содержимого байта не производят; они лишь разрешают программе по-разному трактовать это содержимое (как символ или как число).

 

Для символьного типа определены все операции отношения.

Считается, что ch1 < ch2, если ord(ch1) < ord(ch2), где ch1, ch2 - переменные символьного типа.

 



<== предыдущая лекция | следующая лекция ==>
П Р О С Т Ы Е Т И П Ы Д А Н Н Ы Х | Вещественные типы.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.569 сек.