Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ответы на госэкзамен / Типы данных

.doc
Скачиваний:
21
Добавлен:
02.05.2014
Размер:
71.68 Кб
Скачать

6

Здесь ответ на вопрос 5

Типы данных

Тип данного определяется множеством значений данного и набором операций, которые можно выполнять над этими значениями в соответствии с известными свойствами. Тип – важная характеристика элементарного или неструктурированного данного, поскольку на машинном уровне разные типы данных имеют разные представления в памяти ЭВМ, и, кроме того, тип используется для выбора машинных команд над соответствующими данными. Например, в зависимости от типа слагаемых транслятор или компилятор во время генерации объектного кода формирует машинную команду сложения чисел с фиксированной точкой или команду сложения чисел с плавающей точкой, поскольку в большинстве ЭВМ эти команды различны.

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

Целое - множество целых чисел в диапазоне разрядной сетки ЭВМ.

В компьютерах целое представляется в двух форматах: двоичном и двоично-десятичном. В любом из этих случаев в ЭВМ используется формат представления чисел с фиксированной точкой, при этом представляется, что точка фиксирована после самого младшего разряда числа.

Двоичные числа могут быть беззнаковыми (положительными) или иметь знак, для представления которого выделяется специальный разряд – знаковый. Как правило, это самый старший разряд в числе (крайний левый). Для положительных чисел в знаковый разряд заносится – “0”, для отрицательных – “1”. Разрядная сетка ЭВМ для этих вариантов может быть представлена так:

Двоичное целое число без знака:

Двоичное целое число со знаком:

Знак

Для представления с фиксированной точкой этот диапазон равен (здесь n – общее количество двоичных разрядов в представлении двоичного числа). Заметьте, что и для знакового и для беззнакового представления целых двоичных чисел диапазон изменения характеризуется одним значением, однако при беззнаковом представлении целые числа изменяются от 0 до , а в представлении со знаком – от до . В современных ЭВМ принято длину n разрядной сетки целых чисел выбирать кратной 8 (т.е. целое число байтов).

В двоично-десятичном представлении выделяется один полубайт (4 двоичных разряда) для записи десятичных значений разряда числа (цифр от 0 до 9, в двоичном представлении от 0000 до 1001).

Характеристикой чисел целого типа данных может быть длина, выражаемая максимальным объемом памяти (в байтах) или максимальным числом десятичных позиций для записи данных (в случае двоично-десятичного представления целых чисел).

Кроме арифметической операции сложения, вычитания, умножения и целочисленного деления над целыми числами выполняются такие операции, как вычисление по заданному модулю (нахождение остатка от деления), определение максимального и минимального числа среди нескольких чисел, возведения в целую степень, определение следующего или предыдущего по значению чисел.

Для хранения целого числа в памяти ЭВМ выделяется фиксированное количество двоичных позиций (или полубайтов для двоично-десятичного числа).

Действительные числа - множество вещественных чисел в диапазоне их представления в разрядной сетке ЭВМ.

В ЭВМ точность представления действительного числа является ограниченной из-за конечности (ограниченности) разрядной сетки ЭВМ. Так, число 0.1 в ЭВМ представляется неточно, так как его двоичное представление является бесконечной дробью.

Характеристикой вещественных чисел является минимальное число, которое может быть представлено в ЭВМ.

Типичные операции над действительными числами – сложение, вычитание, умножение, деление, вычисление тригонометрических функций, возведение в степень, извлечение квадратного корня, логарифмирование, нахождение минимального и максимального числа из некоторого конечного множества чисел и некоторые другие.

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

X = M * E P ,

где М- мантисса со знаком, /М/<1,

Е- фиксированное основание (для десятичных чисел Е= 10, в ЭВМ чаще используется основание 16, но может быть и 2 или 8, во всяком случае, кратное 2).

Символьный тип (или данное типа строка) включает множество символов или литер, доступных в конкретной ЭВМ. Как следует из этого определения, множество символов фиксировано и в разных ЭВМ эти множества могут различаться. Типовыми операциями над символьными данными является операция читать и писать.

В ЭВМ символы представляются в двоичном коде. Эти коды упорядочены и для каждого символа может быть определен соответствующий ему порядковый номер.

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

Обратите внимание! Особенностью символьного представления в ЭВМ является то, что часто двоичные коды представления одного и того же символа на разных устройствах ЭВМ различны. Это необходимо учитывать, если придется разрабатывать программы обмена на машинном языке для разных устройств ЭВМ или переносить программу с одной платформы на другую. Упомянутые выше команды работы с символами на языке Паскаль могут дать совсем не тот результат, который Вы ожидаете!

Тип логический или BOOLEAN характеризуется тем, что может принимать два значения “истина” или “ ложь”. В разных языках программирования эти два логических значения могут записываться по разному. Например, в Паскале это true и false, в Фортране TRUE и FALSE, в языке ЛИСП- T и NIL, в языке ПЛ/1 в качестве логического значения используется однобитные строки ‘1’B (true) и ‘0’B (false).

Типовыми операциями над этими данными является конъюнкция (и), дизъюнкция (или), отрицание (не). Часто в языках программирования используются и более сложные логические операции: исключающее или, импликация, эквивалентность. Кроме того, логическое значение является результатом выполнения операций (, , , , , ) над целыми и вещественными числами, символьными и другими данными, над которыми эти операции имеют смысл.

Для запоминания логического значения в памяти ЭВМ достаточно 1 двоичного разряда. Но поскольку в настоящее время минимальным адресуемым элементом памяти является байт, то логическое значение хранят в байте, при этом код его представления в ЭВМ является избыточным.

Тип указатель (или POINTER) представляет собой множество адресов данных в пределах объема памяти ОЗУ (количество адресуемых байтов, слов).

Типичными операциями над такими данными являются операции присвоения адреса памяти или присвоение значения другого указателя. Указатели имеют важное значение при создании и обработке связных структур данных – списков.

В ЭВМ первых поколений форматы адресных команд обычно выбирались таким образом, чтобы в них было достаточно места для записи полных адресов операндов. Напомню, что согласно принципам фон Неймана формат команды ЭВМ представляется следующим образом:

1 r 1 m 1 m 1 m 1 m 1 m

КО

А

А

...

...

А

Здесь прямоугольник обозначает слово информации, части которого, имеющие определенный смысл, принято называть полями. Так, КО, А, А, ... , А- поля команды, представляющие соответственно код операции и адреса операндов, участвующих в операции. Сверху указаны номера двоичных разрядов полей: код операции состоит из r битов, каждое поле адреса операнда А- Асодержит m битов. Нетрудно определить, что для оперативной памяти объемом в один мегабайт (1 Мб = байт) для записи адреса операнда в формате машинной команды требуется m=20 двоичных разрядов. При таком принципе записи адресов в современных ПК форматы машинных команд были бы очень большими. Поэтому в современных ПК используется другой принцип:

  • все пространство оперативной памяти делится на сегменты объемом байт. Адрес начала каждого сегмента кратен 16, и, следовательно, содержит в младших двоичных разрядах адреса 0000;

  • для кода программы, данных программы выделяются отдельные сегменты памяти, адреса которых записываются в выделенные для программы регистры сегментов, правда, регистры имеют объем в 16 бит, и в них адрес записывается без последних нулевых разрядов;

  • адрес (pointer) конкретного данного (или команды программы) определяется относительно начала соответствующего сегмента, этот адрес называется смещением. Очевидно, что значение смещения не может превышать ;

  • истинный или физический адрес операнда в памяти ПК определяется следующим образом:

физический адрес = смещение +16*(регистр сегмента ).

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

Например, пусть смещение будет 10Н (в шестнадцатеричной системе счисления), а номер блока (содержимое регистра сегмента) равно 2000Н. Тогда,

0000 0000 0001 0000 (смещение)

+ 0010 0000 0000 0000 0000 (подчеркнут адрес в регистре сегмента)

0010 0000 0000 0001 0000 (физический адрес)

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

Соседние файлы в папке Ответы на госэкзамен