Представление данных в ЭВМ

Общие принципы представления данных в ЭВМ

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

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

Элементарная ячейка памяти ЭВМ имеет длину 8 бит (1 байт). Наибольшую последовательность бит, которую ЭВМ может обрабатывать одновременно как единое целое, называют машинным словом. Длина машинного слова зависит от разрядности процессора и может быть равной 8, 16, 32, 64 битам и т. д.

Разряды нумеруются справа налево, начиная с 0.

Для записи двоичного числа кроме символов 'О' и 'Г применяются символы '+',двоичная запятая.

В двоичном коде набор символов ограничен нулем и единицей и занимает определенное количество разрядов, поэтому:

  • — для записи символов '+' и '—' в двоичном коде используется 0 и 1 и отводится определенный разряд;
  • — двоичная запятая не ставится, а подразумевается между определенными разрядами двоичного кода;
  • — незначащие разряды двоичного числа в двоичном коде заполняются нулями, либо повторением знака числа в зависимости от вида двоичного кода.

Кодирование целых чисел

Для кодирования целых чисел могут использоваться различные коды, каждый из которых имеет свои достоинства и недостатки. Диапазон значений величин, хранящихся в ячейке памяти, зависит от количества бит памяти, отведенных для их хранения. Для беззнакового представления целых двоичных числа изменяются от Одо 2" -1, а в представлении со знаком — от (— 2”-1) до (г"-1-!).

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

М = 2Л-1,

где п — разрядность двоичного числа.

Целые беззнаковые коды

Рис. 1.1. Целые беззнаковые коды

В случае двоичного 8-разрядного беззнакового двоичного кода целые числа, которые можно записать с его помощью, находятся в диапазоне от 0 до 255. Для беззнакового двоичного 16-разрядного кода диапазон представляемых значений будет от 0 до 65535. В микропроцессорной системе, построенной на 8-разрядном процессоре, для хранения 16-разрядного числа используются две ячейки памяти, расположенные в соседних адресах.

В качестве примера записи 16-разрядного числа в двух соседних 8 разрядных ячейках памяти, на рис. 1.2 приведена запись числа 5624910 = 11011011101110012. Младший байт размещается в памяти по младшему адресу (например, 200-му), а старший — по старшему (на единицу больше — 201-му). При этом считается, что 16-разрядное число расположено в памяти по адресу 200 (по минимальному адресу выделенной для нее памяти), хотя и занимает два байта.

1______________________________________

Младший байт

числа

56249

27

27

27 27

27

22

2'

1 1

L_o

1 1 1 1 1

1

1 Q 1

о

1 1 1

Старший байт

числа

56249

2'5

214

2'3 212

2"

2'°

Р

28

1 1

l_J_

1 0 1 1 1

1

1 0 1

1

I_j_1

Рис. 1.2. Формат 16-разрядного беззнакового двоичного кода, записанного в двух соседних ячейках памяти

Следует отметить, что в отличие от действий в математике, при записи чисел не существует возможности не записывать старшие незначащие нули. Поэтому число 1210не может быть записано как 11002. Если число первоначально было определено, как 8-разрядное оно обязательно должно быть записано во всех восьми разрядах кода: 000011002. Если число первоначально было определено как 16-разрядное, то это же самое число 1210 должно быть записано как

00000000000011002.

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

В прямом знаковом коде нулем обозначается знак '+', а единицей — знак . В случае представления величины со знаком самый левый (старший) разряд указывает на положительное число, если содержит нуль, и на отрицательное, если — единицу.

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

Знак 27 27 27 27 22 2* 2°

0

1

1

1

1

1

1

1

0

0

0

0

1

0

0

1

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

0

0

0

1

0

0

1

1

1

1

1

1

1

1

1

Максимально возможное число — +127 +9 О О -9 Минимально возможное число--127

Рис. 1.3. Прямые целые знаковые коды

В случае двоичного восьмиразрядного знакового целого числа диапазон чисел, которые можно записать таким кодом от —127 до +127. Для шестнадцатиразрядного кода этот диапазон будет от —32767 до +32767. В восьмиразрядном процессоре для хранения такого числа тоже используется две ячейки памяти, расположенные в соседних адресах.

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

Обратите внимание, что при считывании содержимого памяти микропроцессора ни по каким внешним признакам невозможно отличить знаковый двоичный код от беззнакового. Это сможет сделать только программа, в которой заложена информация о назначении каждой ячейки памяти.

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

Формат 8-разрядного обратного знакового двоичного кода приведен на рис. 1.4. На рисунке приведено шесть различных чисел, записанных в этом коде. Слева указаны десятичные числа, соответствующие двоичному представлению обратного кода.

Знак 27 27 27 27 22 21

0

1

1

1

1

1

1

1

0

0

0

0

1

0

0

1

0

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

1

1

1

1

0

1

1

0

1

0

0

0

0

0

0

0

Максимально возможное число — +127 +9 О -О -9

Минимально возможное число--127

Рис. 1.4. Целые обратные двоичные коды

Обратите внимание, что знак числа при инвертировании получается автоматически. При инвертировании положительного числа, в котором знак '+' обозначен логическим нулем, мы получаем логическую единицу, то есть знак .

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

Тем не менее, при работе с обратными кодами требуется специальный алгоритм распознавания знака, вычисления абсолютного значения числа, восстановления знака результата числа. Кроме того, в прямом и обратном коде для запоминания числа 0 используется два кода.

Дополнительные двоичные коды. От вышеперечисленных недостатков свободны дополнительные коды. Эти коды позволяют правильно суммировать положительные и отрицательные числа, не анализируя знаковый разряд.

Это возможно благодаря тому, что дополнительные числа являются естественным кольцом чисел, а не искусственным образованием как прямые и обратные коды (рис. 1.5). Вычислять дополненный двоичный код отрицательного число легко — для этого достаточно инвертировать модуль числа и затем прибавить 1.

Знак 27 27 27 27 22 21

0

1

1

1

1

1

1

1

0

0

0

0

1

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

1

1

1

0

1

1

1

1

0

0

0

0

0

0

0

Максимально возможное число — +127 +9 О

-9

Минимально возможное число--128

Рис. 1.5. Дополнительные двоичные коды

Диапазон чисел, которые можно записать восьмиразрядным таким кодом от —128 до +127. Для шестнадцатиразрядного кода этот диапазон будет от — 32768 до +32767.

В памяти объемом П бит может храниться 2" различных значений. Например, величины типа Integer (Intl6) лежат в диапазоне от —32768 (—215) до +32767 (215 —1) и для их хранения отводится 2 байта (16 бит); типа Long Integer (Int32) — в диапазоне от -231 до 2' —1 и размещаются в 4 байтах (32 бита).

Кодирование символов. Набор символов персональных ЭВМ, совместимых с IBM PC, чаще всего является расширением кода ASCII. В этом случае для кодирования символов достаточно одного байта, что позволяет представить 256 символов (с десятичными кодами от Одо 255). В настоящее время широко используются и двухбайтовые представления символов.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ ОРИГИНАЛ   След >