Частина тексту файла (без зображень, графіків і формул):
Алгебраїчне додавання у зворотному та в доповняльному кодах. Модифіковані коди.
При сложении двух чисел, представленных в обратном или дополнительном коде, их знаковые разряды складываются аналогично цифровым, причем возможен перенос единицы из старшего цифрового разряда в знаковый.
Если оба операнда представлены в прямом коде и имеют одинаковые знаки, то над такими операндами выполняется процедура сложения и результату присваивается знак исходных операндов.
Рассмотрим примеры:
1) 210 + 410 = 610 2) -210 - 410 = -610
0. 0010 а) 1. 1110 б) 1. 1101
+ 0. 0100 + 1. 1100 + 1. 1011
0. 0110 = 610 1 1. 1010 = -610 1 1. 1000
+1 коррекция
1. 1001 = -610
Во втором примере оба отрицательных слагаемых представлены либо в дополнительном коде (а), либо в обратном коде (б). В первом случае результат получен в дополнительном коде, а во втором, после коррекции, - в обратном.
Если же операнды имеют разные знаки, то должна выполняться процедура вычитания. Но, как уже отмечалось, процедуру вычитания заменяют процедурой сложения, отрицательный операнд (вычитаемое) представляют в обратном или дополнительном коде, а положительный операнд - в прямом коде.
Например:
1) 410 - 210 = 210
а) 0. 0100 б) 0. 0100
+ 1. 1110 + 1. 1101
1 0. 0010 = 210 1 0. 0001
+1 коррекция
0. 0010 = 210
2) 410 - 410 = 0
а) 0. 0100 б) 0. 0100
+ 1. 1100 + 1. 1011
1 0. 0000 = 010 1. 1111
+1 коррекция
1 0. 0000 = 010
3) 210 - 410 = -210
а) 0. 0010 б) 0. 0010
+ 1. 1100 + 1. 1011
1. 1110 = -210 1. 1101 = -210 коррекции нет.
В примерах 1а) и 2а) единица, выходящая за разрядную сетку, не учитывается ("теряется").
Как видно из примеров процедура алгебраического сложения с дополнительными кодами проще, чем с обратными кодами, т.к. в последнем случае при возникновении единицы переноса за пределы разрядной сетки, выделенной для числа в формате с фиксированной запятой, приходится корректировать результат с помощью дополнительной процедуры прибавления единицы к результату. Нулевой результат получается или в прямом коде или же в обратном, что также требует коррекции результата. Поэтому в настоящее время на практике для представления отрицательных операндов используется в основном дополнительный код.
Таким образом, перед выполнением самой процедуры алгебраического сложения в дополнительном коде нужно проанализировать знаки слагаемых. Если они разные, то выполняется алгебраическое сложение (фактически вычитание) без проверки на переполнение результата, т.к. его в этом случае просто не может быть. Но контролируется чтобы в результате не появился запрещенный отрицательный ноль. Если же у исходных операндов знаки одинаковы, то такой же знак предварительно присваивается результату и выполняется само сложение. Если знак окончательного результата не совпадает с предварительно присвоенным знаком, то это является признаком переполнения и следовательно, неправильного результата.
Еще раз подчеркнем, что результат алгебраического сложения операндов представленных в обратном и дополнительном кодах получается также в обратном и дополнительном коде соответственно.