Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Кодирование десятичных чисел и алфавитно-цифровой информации.

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

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

Совокупность всех символов, используемых в вычислительной системе, представляет собой её алфавит. Символу соответствует машинная единица информации слог. Так называют группу двоичных разрядов, служащую для представления символа в машине (двоичный код символа). Если группа включает k разрядов, то с её помощью можно кодировать 2k символов.

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

Для представления алфавитно-цифровой информации в ЭВМ используются различные стандарты двоичных кодов обмена информацией. Так в ЕС ЭВМ использовались восьмибитные коды для обмена и обработки информации КОИ-8, ДКОИ, в вычислительных системах IBM 360 и 370 восьмибитный код EBCDIC (Extended Binary Coded Decimal Interchange Code) – расширенный двоично-кодированный десятичный код для обмена информацией. Каждый из переменных стандартов позволяет кодировать до 256 различных символов.

В мини ЭВМ, микро ЭВМ и персональных ЭВМ используются коды обмена информацией, ядром которых является семибитный код ASCII (American National Standard Code for Information Interchange) – Американский национальный стандартный код для обмена информацией. Этот код позволяет кодировать 128 различных символов включающие прописные и строчные буквы латинского алфавита. Добавление восьмого разряда к коду ASCII позволяет кодировать национальные алфавиты и символы псевдографики. ASCII код символа соответствует нулевому значению этого дополнительного разряда.

Например, в коде EBCDIC букве А соответствует код (С1)16, B – (C2)16, S – (E2)16. В ASCII коде латинские буквы от A до Z последовательными двоичными кодами от (41)16 до (5А)16.

Для представления текстовой информации используются строки символов. Строки символов изображаются в ЭВМ полем переменной длины. Так в ЕС ЭВМ длина поля может изменяться от 1 до 256 байт. В систему команд ЭВМ вводятся специальные команды для обработки строк символов.

В ЭВМ, поддерживающих десятичную арифметику, десятичные числа представляются либо в распакованном (зонном) формате, либо в упакованном формате. При представлении чисел в распакованном формате каждая цифра записывается в виде байта, значение которого определяется применяемым кодом обмена информации. Так в коде EBCDIC цифры 0,1,2,…,9 изображаются байтами (F0)16, (F1)16, (F2)16,…, (F9)16. Старшие четыре разряда заполняются единицами: (1111)2=(F)16. Они образуют зонную часть представления, поэтому распакованный формат называют зонным. Младшие четыре разряда образуют двоичное значение цифры в BCD – формате с весами 8421:

0à0000, 1à0001, 2à0010, 3à0011, 4à0100, 5à0101, 6à0110, 7à0111, 8à1000, 9à1001/

Для эффективного использования памяти, уменьшения длин программ и времени решения задач десятичные данные необходимо представлять последовательностями из любого числа цифр – полями переменной длины, которые могут содержать 1,2,… цифр. Так в ЕС ЭВМ десятичные числа представляются полями переменной длины от 1 до 16 байтов.

Пример 1.10.

Изображения чисел в зонном формате в коде EBCDIC:

1) Число 457 в данном формате в поле, длинной три байта, имеет вид:

2) Число – 5678 в зонном формате в поле, длиной четыре байта, имеет вид:

Как видно из примеров в зонной части младшей цифры записывается знак числа: С ( или F) для знака «+», и D для знака «-».

Зонное представление десятичных данных неэкономично, так как в каждом байте размещается только одна цифра, хотя может уместится две. Поэтому для выполнения арифметических операций употребляется другая форма, которая называется упакованной. В упакованной форме в каждом байте размещается по две цифры. Код знака заносится в младшую тетраду младшего байта поля. Таким образом, максимальное число разрядов десятичного числа равно 31 (16*2-1=31).

Пример 1.11.

Число 457 в упакованной форме занимает поле длиной два байта:

Число – 5678 в упакованном формате занимает 3 байта:

При использовании ASCII кода каждая цифра в распакованном формате представляется байтами, старшая тетрада которых имеет значение (0011)2=(3)16: 0à(30)16, 1à(31)16, 2à(32)16, 3à(33)16, 4à(34)16, 5à(35)16, 6à(36)16, 7à(37)16, 8à(38)16, 9à(39)16.

 

Логические значения.

 

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

Булевы переменные используются в программах как самостоятельные объекты достаточно редко. Чаще всего они являются элементами наборов булевых векторов и матриц. К тому же слова информации, представляющие команды и числа, а также поля переменной длины, представляющие строки символов и тексты, часто приходится обрабатывать с использованием логических (булевых) операций, по отношению к которым двоичные разряды слов и полей являются логическими значениями. Таким образом, логические значения 0 и 1 чаще всего участвуют в операциях в виде наборов слов или полей переменной длины, каждый разряд которых рассматривается, как значение булевой переменной. Информация, представляемая такими словами, трактуется как не числовая и в процессе выполнения логических операций все разряды слова обрабатываются одинаково, как отдельные логические значения, объединённые в один набор. Таким образом, при обработке логических значений логические операции распространяются на слова и поля переменной длины, исследуемые для представления булевых переменных, команд, чисел и строк символов.

 

Машинные коды.

 

Двоичные числа в ЭВМ представляются машинными кодами определённой разрядности. Предположим, что число разрядов слова равно m тогда двоичный код числа X в этой разрядности запишется следующим образом:

X=Xm-1Xm-2Xm-3…X1X0, (1.15)

Здесь Xm-1 – знаковый разряд числа

.

 

Прямой код.

 

Прямой код числа X определяется следующим образом:

, (1.16)

Из (1.16) следует, что ноль имеет два представления:

.

 

Пример 1.12.

Представить в прямом коде двоичные числа (+1000010)2 и (-1000010)2:

а) [+1000010]пр=0 1000010, б) [-1000010]пр=1 1000010.

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

 

Дополнительный код.

 

Дополнительный код числа X определяется следующим образом:

, (1.18)

Пример 1.13.

Представить в дополнительных кодах двоичные числа (+1000010)2 и (-1000010)2:

а) [+1000010]доп=0 1000010, б) [-1000010]доп=28-1000010=10 0000000-1000010=1 0111110.

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

Ноль в дополнительном коде имеет единственное представление:

[+0]доп=[-0]доп=[0]доп= .

Как следует из (1.18) дополнительный код осуществляет

Рис. 1.1

отображение отрицательных чисел на область положительных чисел (рис. 1.1)

 

Обратный код числа.

 

Обратный код числа X определяется следующим образом:

, (1.19)

Пример 1.14.

Представить в обратном коде двоичные числа и .

а) [+1000010]обр=0 1000010.

б) [-1000010]обр=28-1000010-1=10 0000000-1000010-1=1 0111101.

 

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

Ноль в обратном коде имеет два представления:

, .

Как следует из (1.19) обратный код, также как и дополнительный,

осуществляет отображение отрицательных чисел на область положительных чисел (Рис. 1.2.).

Рис. 1.2

На основании (1.19) можно установить связь между обратным и дополнительным кодом,

[X]обр=[X]доп-1, X£0, (1.20)

откуда можно получить другое правило образования дополнительного кода,

[X]доп=[X]обр+1. (1.21)

Это правило используется в ЭВМ при переходе к дополнительному коду числа.

Последнее изменение этой страницы: 2016-08-11

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...