Прямой и обратный коды

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

К кодам предъявляются следующие требования:

  • 1) разряды числа в коде жестко связаны с определенной разрядной сеткой;
  • 2) для записи кода знака в разрядной сетке отводится фиксированный, строго определенный разряд.

Например, если за основу представления кода взят 1 байт, то для представления числа будет отведено семь разрядов, а для записи кода знака один разряд.

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

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

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

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

Пример 1.71. Пусть для записи кода выделен 1 байт, тогда: для числа+1101 прямой код 0,0001101; для числа-1101 прямой код 1,0001101.

Пример 1.72. Пусть для записи кода выделен 1 байт, тогда:

для числа+1101 прямой код 0,0001101;

обратный код 0,0001101;

для числа-1101 прямой код 1,0001101;

обратный код 1,1110010.

Пример 1.73.

а) для числа +1101 определить прямой (П), обратный (ОК) и дополнительный (ДК) коды:

Прямой код

Обратный код

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

0,0001101

0,0001101

0,0001101

б) для числа -1101 определить прямой, обратный и дополнительный коды:

Прямой код

Обратный код

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

1,0001101

1,1110010

1,1110011

Пр и мер 1.74. Сложить два числа: Лп)=1 и ВН)= 16.

А2= +01 И; ^2 = +10000.

Исходные числа имеют различную разрядность, необходимо провести выравнивание разрядной сетки:

Шп= Шок= И2]дк= 0, 00111;

[^2]п= [^2]ок= [^2]дк=0, 10000.

Сложение в обратном или дополнительном коде дает один и тот же результат

О, 00111

+ 0 , 10000

С2 = 0 , 10111

с10 = +23

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

Пр имер 1.75. Сложить два числа: А10 = + 16; В]0 = -7 в ОК и ДК. В этом случае должна быть реализована зависимость (А + (-В)), в которой второй член преобразуется с учетом знака:

2п = 0, 10000 = О, 10000; 2]ок = 0, 10000; [Д2]дк = 0, 10000;

2]П = 1, 111 = 1, 00111; 2]ок = 1, 11000; [?2]дк = 1, 11001.

+

Сложение в О К:

Шок = 0.10000 + I й,]ок = I • 11000

0,01000

.............1

0, 01001

Сложение в ДК: И2]дк = 0, 10000

+2]дк= 1, П001

*0,1)1001

С2 = О, 01001;

с,о = +9.

С2 = 0, 01001; Сш = +9.

При сложении чисел в ОК и ДК были получены переносы в знаковый разряд и из знакового разряда. В случае О К перенос из знакового разряда требует дополнительного прибавления единицы младшего разряда. В случае ДК этот перенос игнорируется.

Примечание. Произведение чисел получается путем сложения частных произведений, представляющих собой разряды множимого, сдвинутые влево в соответствии с позициями разрядов множителя. Частные произведения, полученные умножением на нуль, игнорируются. Важная особенность операции умножения «-разрядных сомножителей — увеличение разрядности произведения до п + п = 2/7. Знак произведения формируется путем сложения знаковых разрядов сомножителей. Возможные переносы из знакового разряда игнорируются.

Пр имер 1.76. Разделить два числа Л10=45; В10 = 5. Операция деления, как и в десятичной арифметике, — обратная операции умножения. Покажем, что и эта операция приводится к последовательности операций сложения и сдвига.

Шп = Ю1101; 2]п= 101

Делитель:

  • 101
  • 1001 — частное

Делимое: 101101 101_

0101 " 101

о

2]п = 1001; Сю = 9.

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

Если учесть, что все вычитания в ЭВМ заменяются сложением в ОК или в ДК, то действительно операция деления приводится к операциям сложения и сдвигам вправо разрядов делителя относительно разрядов делимого. Отметим, что делимое перед операцией деления должно быть приведено к 2/7-разрядной сетке. Только в этом случае при делении на я-разрядный делитель получается /7-разрядное частное.

Знак частного формируется также путем сложения знаковых разрядов делимого и делителя, как это делалось при умножении.

 
< Пред   СОДЕРЖАНИЕ     След >