Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие.doc
Скачиваний:
96
Добавлен:
03.05.2015
Размер:
2.04 Mб
Скачать

2.2. Кодирование данных

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

Исходя из этого, в качестве универсальной формы представления данных для компьютерной обработки может быть использовано представление данных в двоичном виде. Оно предполагает, что для хранения данных используется упорядоченная совокупность ячеек, каждая из которых может находиться в одном из двух состояний, отображаемых с помощью символов 0 и 1. Тогда с помощью двух двоичных ячеек (двух бит) можно закодировать 22 = 4 различные комбинации кодов – 00, 01, 10, 11, с помощью трех бит - 23 = 8 комбинаций, а восьми бит или 1 байта - 28 = 256.

Для компьютерной обработки данных разнообразных видов необходимо определить универсальную систему кодирования. Напомним, что кодированием называется отображение состояния одной физической системы с помощью состояния другой. В более узком смысле, характерном для информатики, под термином «кодирование» необходимо понимать переход от одной формы представления данных к другой, более удобной для хранения, передачи или обработки. Поскольку внутреннее представление данных в компьютере должно осуществляться с помощью всего лишь двух символов (0 и 1), то возникает задача представления всех данных: числовых, символьных, звуковых, графических, видео и др. с помощью этих двух символов, т.е. с помощью двоичной системы счисления.

Особенность представления данных в вычислительных системах связана с тем, что в памяти компьютера они должны размещаться в байтах, являющихся минимальными по размеру адресуе­мыми ячейками памяти. Под адресуемостью понимается возможность обращения к данному участку памяти. Если для представления набора данных необходим объем, превосходящий один байт, то для хранения этих данных будет отведена последовательная группа байт. Ад­ресом данных будет являться адрес первого байта, а в каждом байте будет записываться соответствующий код из восьми двоичных разрядов. Задача кодирования данных заключается в том, чтобы определить правила их записи в одном байте или последовательности байт. Для представления основных видов данных используются абстракции специального вида, называемые типами данных. Каждому типу данных соответствуют строго определенная структура представления данных и методы их обработки. Необходимо отметить, что при проведении компьютерной обработки постоянно решается и обратная задача, заключающаяся в воспроизведении исходных данных по записанным кодам.

2.3. Представление числовых данных

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

Целые положительные числа в диапазоне от 0 до 255 могут быть представлены в двоичном коде с помощью перевода в двоичную систему счисления. В памяти компью­тера для такого представления потребуется один байт.

При представлении целых положительных и отрицательных чисел для кодирования знака используется отдельный, обычно старший, бит. С помощью нуля отображается знак плюс, а единицы - минус. Оставшиеся семь бит используются для представления цифр, что позволяет закодировать с помощью одного байта целые числа в интервале от -127 до +127. Описанный способ представления получил название прямого кода. Его недостатком является неоднозначность представления числа ноль (числу ноль соответствуют два кода 0000 0000 и 1000 0000), приводящая к усложнению арифметики и требующая соответствующего решения на аппаратном уровне. Указанный недостаток можно устранить с помощью использования так называемого дополнительного кода. В соответствии с ним положительные числа отображаются так же, как и в прямом коде, а отрицательные – с помощью числа, получающегося в результате вычитания из 1 0000 0000 их модуля. Например, чис­лу - 3 соответствует код 1111 1101= 1 0000 0000 - 0000 0011. Достоинством дополнительного кода является простота реализации арифметических действий, поскольку каждый последующий код получается из предыдущего прибавлением единицы.

В целях оптимизации использования ресурсов компьютера во всех системах программирования используется несколько типов данных для работы с целыми числами. Например, в системе программирования Delphi5, основанной на языке Паскаль, их девять. Рассмотренные выше представления называются Byte и ShotInt. Совершенно аналогично целые числа от 0 до 65535 (Word) и целые числа от - 32768 до 32767 (SmallInt) пред­ставляются с помощью двух байт в двоичной системе счисления.

Действительные числа, с точки зрения математики, являются конечными или бесконечными дробями, длина и соответственно точность которых не ограничена. Поскольку для представления чисел в компьютерах используются один байт или же последовательность байт, имеющих ограниченные количества разрядов, то и бесконечные, и просто «длинные» числа ограничиваются до некоторой длины и в компьютерном представлении являются приближенными.

Существуют две формы записи действительных чисел:

  • естественная форма или форма с фиксированной запятой (точкой), в которой целая часть числа отделяется от дробной запятой и положение запятой фиксировано;

  • нормальная форма, или форма с плавающей запятой (точкой), в которой число изображается в виде мантиссы и порядка, являющегося целым числом: X=±MP±r, где М – мантисса числа, r – порядок числа, Р – основание системы счисления. В случае, когда мантисса 1/P ≤ M < P (0,1 ≤ M < 1 для десятичной системы счисления), такая форма представления называется нормализованной.

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

Для отображения порядка числа используется представление с избытком, при котором вместо истинного значения порядка хранится число, называемое характеристикой и получаемое путем прибавления к порядку необходимого смещения. Так, например, если для отображения порядка используется восемь бит и, следовательно, его значения лежат в диапазоне - 128 до + 127, то смещение равно 128. Отображение порядка в этом случае осуществляется с помощью неотрицательных чисел, лежащих в диапазоне от 0 до 255. Причинами использования смещенной формы представления порядка является упрощение выполнения операций как над порядками, так и над самими числами, поскольку в этом случае возможно выполнение действия с порядками, как с положительными числами.

Аналогично целым числам при практической реализации в системах программирования применяется несколько типов данных, основанных на модели чисел с плавающей точкой. Например, в языке Паскаль системы программирования Delphi 5 используется 7 типов данных разной «длины». Так, тип Real позволяет оперировать с числами из диапазона 5.010-324  1.710308, имеющими 15 значащих разрядов и требующих для своего хранения 8 байт памяти, а тип Single предназначен для работы с числами из диапазона 1.510-45  3.41038, имеющими 7 значащих разрядов и занимающих 4 байта.