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


Категории:

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






Экономичность двоичного кодирования

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

Двоичным кодом называется любая система кодирования, в которой используются только два символа: 0 и 1. Обработка информации процессором УВМ производится только в двоичных кодах. Это объясняется экономичностью построения управляющих устройств на элементах, имеющих при нормальной эксплуатации только два различных состояния (да-нет, открыто-закрыто, включено-выключено, намагничено - не намагничено, высокий потенциал - низкий потенциал и т.п.). В обобщенном виде одно из указанных состояний обозначается цифрой 0, а другое – цифрой 1. Обоснование данного положения проведем исходя из того, что при обработке числовой информации сложность запоминающих устройств и объем пересылаемых сообщений определяются произведением основания системы исчисления на количество разрядов максимального записываемого или пересылаемого числа. Например, для обеспечения записи в десятичной форме любого из чисел величиной не более 1000 требуется не менее трех десятипозиционных устройств, имеющих в сумме 30 рабочих контактов. В то же время для записи каждого из тех же чисел в двоичной форме требуется не более 10 двухпозиционных устройств (210=1024) с общим количеством рабочим контактов, равным 20. Преимущество двухпозиционных устройств памяти над десятипозиционными в данном случае несомненно. В общем случае максимальное число различных сообщений, каждое из которых можно зафиксировать с помощью m n-позиционных запоминающих устройств (n-основание системы исчисления), равно:

(2.11)

Отсюда становится ясным, что количество разрядов m запоминаемого числа не может превышать (при основании системы исчисления, равном n) величины

,

а сложность запоминающего устройства, пропорциональная произведению nm, определится из соотношения:

. (2.12)

Продифференцировав правую часть соотношения (2.12) по n и приравняв полученную производную нулю, получим уравнение

lnnопт-1=0 ,

из которого определится оптимальное значение , которому соответствует наименьшая сложность запоминающих устройств. Из ближайших к оптимальному значений n=2 и n=3 лучшим является n=2, так как двоичные элементы имеют относительно большую (в расчете на один рабочий контакт) простоту технической реализации по сравнению с трехпозиционными элементами. Проиллюстрируем данное положение на примере схем двухпозиционного (RS-триггер) и трехпозиционного запоминающих устройств, приведенных на рис. 2.2.

 

Рис. 2.2. Схемы двухпозиционного (а) и трехпозиционного (б) запоминающих устройств

Схемы рис.2.2 построены на элементах ИЛИ-НЕ, выходной сигнал элемента ИЛИ-НЕ равен единице только при наличии нулевых сигналов на всех его входах. Информационные сигналы 0,1 и 2 поступают на входы схем а и б (рис.2.2) в виде единичных импульсов. При поступлении единичного импульса на вход 0 выход 0 устанавливается в единичное состояние, а при поступлении единичного импульса на вход 1 выход 1 устанавливается в единичное состояние. Остальные выходы соответственно переходят в нулевое состояние. Состояние выходов сохраняется до тех пор, пока не поступит единичный импульс на вход, номер которого не совпадет с номером выхода, находящегося к тому времени в единичном состоянии. Одновременная подача единичных сигналов на два или три входа не допускается. На рис. 2.2 видно, что количество связей, необходимых для реализации трехпозиционного устройства (в расчете на один рабочий контакт) более чем в 1.5 раза больше, чем у двухпозиционного.

 

Арифметические двоичные коды

В предыдущем параграфе был уже рассмотрен двоичный арифметический код, применяющийся для хранения чисел и в вычислениях. Его называют также прямым кодом. При использовании прямого кода знак числа кодируется с помощью специального знакового разряда, принимающего значение 0 для положительных и 1-для отрицательных чисел. Применение прямого кода неудобно тем, что при сложении двух чисел, имеющих разные знаки, операция сложения должна быть заменена операцией вычитания меньшей величины из большей с присвоением результату знака большей величины. Более удобен в вычислительных операциях двоичный дополнительный код, который, также являясь арифметическим, позволяет заменить вычитание на обычное сложение. При формировании дополнительного кода исходят из понятия дополнения. Дополнением целого числа Qназывают разность:

, (2.13)

где m- максимальное количество разрядов двоичного числа в данном вычислительном устройстве, включая знаковый разряд. При записи числа Q в дополнительном коде согласно формуле (2.13) значение кодовой комбинации M, отображающий величину Q, если ее интерпретировать как арифметический код без знака, может изменяться от 0 до 2m-1. При этом значения M от 0 до 2m-1-1 рассматривают как положительные числа (в знаковом разряде находится 0), а значения от 2m-1-1 до 2m-1 - как отрицательные числа, модуль которых составляет от 0 до 2m-1-1 (в знаковом разряде находится единица). Правомерность данной интерпретации доказывается тем, что сумма значения Q и его дополнения M, как следует из соотношения (2.13), всегда равна 2m, т.е. единице старшего разряда. Последний не отображается, так как находится за пределами принятой разрядной сетки, а во всех m разрядах нашего кода при суммировании Q и M будут записаны нули. Следовательно, число Q и его дополнение M отображают числа, равные по модулю и противоположные по знаку.

Представив соотношение (2.13) в виде

, (2.13’)

получим простую процедуру формирования дополнения числа Q. Предварительно заметим, что

- это инверсия (обратный код) числа Q, которую получают заменой единиц нулями, а нулей единицами. Следовательно, для получения дополнения необходимо исходное число инвертировать и прибавить к полученной инверсии единицу. Следствия:

- если число Q представлено в дополнительном коде, то его дополнение тоже оказывается представленным в дополнительном коде;

- положительные числа записываются в прямом и в дополнительном кодах одинаково;

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

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

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

Пример 2.1. Сложить числа -(214+1) и 17 при m=16, а затем из полученного результата вычесть 17.

Решение:

1) Запишем -(214+1) и 17 в прямом коде при m=16;

-(214+1)=1100 0000 0000 0001;

17=0000 0000 0001 0001.

2) Перевод заданных чисел в дополнительный код:

-(214+1)=1011 1111 1111 1110+1=1011 1111 1111 1111.

Дополнительный код положительного числа 17 совпадает с его прямым кодом.

3) Сложение-(214+1) и 17:

1011 1111 1111 1111

+

0000 0000 0001 0001

1100 0000 0001 0000

4)Перевод результата в прямой код:

1011 1111 1110 1111+1=1011 1111 1111 0000.

5)Изменение знака числа 17:

-17=1111 1111 1110 1110+1=1111 1111 1110 1111.

6)Заданное вычитание числа 17:

1100 0000 0001 0000

+

1111 1110 1110 1111

1 1011 1111 1111 1111

Поскольку переполнения нет, то перенос из старшего разряда не учитывается. В остальном результат точно совпадает с дополнительным кодом числа -(214+1).

 

Неарифметические двоичные коды

Наряду с арифметическими кодами в системах автоматизации применяются и неарифметические двоичные коды. В частности, в устройствах индикации и связи с оператором применяются двоично-десятичные коды, предназначенные для отображения арабских цифр. Обычно для отображения цифр используются кодовые комбинации, состоящие из четырех двоичных символов. Наибольшее применение нашел двоично-десятичный код 8–4–2–1, в котором каждая десятичная цифра записывается в арифметическом двоичном коде таким образом, что численное значение записанной четырехсимвольной комбинации равно отображаемой цифре, а именно:

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

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

Из других неарифметических двоичных кодов, применяющихся для записи чисел, наиболее интересны циклические коды Грея, нашедшие применение в кодовых датчиках положения.

Кодами Грея называются двоичные коды, у которых соседние кодовые комбинации отличаются лишь одним кодовым символом. Соседними кодовыми комбинациями мы здесь называем кодовые комбинации, предназначенные для отображения чисел, которые, будучи записанными в каком-либо арифметическом коде, отличаются друг от друга на единицу младшего разряда, принятую в данной системе кодирования. Чтобы код Грея был циклическим, кодовая комбинация, отображающая максимальное число данного кода, выполняется соседней с кодовой комбинацией, отображающей минимальное число. Понятие соседней кодовой комбинации становится совершенно ясным, если мы представим круговой датчик положения, позиции которого последовательно отображены в каком-либо коде Грея. Тогда соседние кодовые комбинации будут отображать соседние позиции датчика положения, причем последняя позиция окажется соседней с первой. Количество двоичных символов m, отображающих код Грея, определяется количеством положений Q проектируемого датчика положения из соотношения

.

Очевидно, что если, например, Q=1000, то m≥10.

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

 

Таблица 2.1

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

Важнейшую роль в организации взаимодействия между человеком-оператором и УВМ играют двоичные коды обмена информацией (см. приложение 1). Из них наиболее распространенным является код ASCII (American Standard Code for Information Interchange, табл. П1.1), играющий роль международного стандарта. Это семибитовый код, т.е. код, в котором каждая кодовая комбинация состоит из семи двоичных символов, что позволяет получить всего 128 (27) различных кодовых комбинаций. С помощью кода ASCII (произносится аски) кодируются 26 букв (заглавных и строчных) современного латинского (английского) алфавита, 10 арабских цифр, знаки математических операций, знаки препинания, различные специальные символы (например, %) и управляющие символы (табл. П1.3).

Обработка кодовых комбинаций ASCII производится байтами. Благодаря этому в составе каждой кодовой комбинации ASCII появляется дополнительный бит, который может быть использован либо для расширения кода (“ расширенный ASCII”), либо для контроля правильности кодовых комбинаций. В байте кода ASCII дополнительный бит занимает место старшего бита. При расширении кода ASCII его основная часть, т.е. символы, отображенные в таблице П.1.1, кодируется нулевым значением старшего бита (b7=0), а дополнительные символы, полученные при расширении ASCII, кодируются единичным значением старшего бита. Именно таким путем сформированы символы отечественного кода обмена информацией КОИ-8 (см. табл. П1.2), применение которого нормировано по ГОСТ Р34.303-92, построенным в соответствии с международным стандартом ISO4873-86. В коде КОИ-8 представлены, кроме символов базового ASCII, буквы русского алфавита и дополнительные управляющие символы. Соответствие русских управляющих символов КОИ-8 английским управляющим символам ASCII можно проследить по таблице П1.3. Заметим, что в таблицах П1.2 и П1.3 приведены только 16-ричные коды, но их нетрудно перевести в двоичную форму, если воспользоваться рекомендациями, приведенными в §2.3. А десятичные цифры в коде ASCII (табл. П1.1) закодированы по принципу двоично-десятичного кодирования, так как четыре младших бита ( ) кодов десятичных цифр соответствуют двоично-десятичному коду 8-4-2-1.

Символы кодов обмена информацией составляют основу алфавитов всех современных систем кодирования. По этой причине большинство символов кода ASCII отображено на клавишах стандартной клавиатуры любого компьютера. Типичным примером применения символов ASCII являются символы кода ISO-7 (см. приложение 4), предназначенного для программного управления оборудованием. В этом коде, которому соответствует отечественный стандарт ГОСТ 20999-83, используются исключительно символы ASCII. Код ISO-7 является 8-битным, причем свободный старший бит в каждом байте кода ISO-7 используется для контроля кода по четности (см. §2.5). Заметим, что код ISO-7 не может считаться двоичным кодом, так как его слова состоят не из двоичных символов (не из наборов нулей и единиц), а из символов ASCII. Аналогично строятся языки ассемблеров, которые позволяют при программировании в машинных кодах пользоваться алфавитно-цифровыми мнемоническими обозначениями кодов операций и команд процессоров УВМ, присваивать символические имена их рабочим регистрам и формировать удобные схемы адресации. Тем более не отображаются непосредственно в двоичных кодах алгоритмические языки высокого уровня.

 

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

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