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



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

Двоичным кодом называется любая система кодирования, в которой используются только два символа: 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).

 


Дата добавления: 2018-04-04; просмотров: 147;