www.chms.ru - вывоз мусора в Балашихе 

Динамо-машины  Обратные коды 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 [ 100 ] 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189

и возникает перенос в разряд знака. С учетом этого переноса суммирование в разряде знака дает

1-1-1-1-1 = 1 (mod 2),

т. е. сохраняет знак laquo;- raquo;. Полученный результат (знак laquo;- raquo; и величина 1 - ( В + С [) в основных разрядах) представляет собой сумму двух отрицательных чисел В и С, записанную, как это и требуется, дополнительным кодом.

Предположим, наконец, что складываются два числа разных знаков, скажем В gt; О и С lt;; 0. Для числа В основные разряды содержат величину \В\, а разряд знака - laquo;О raquo;, для С в основных разрядах содержится 1 - С, в разряде знака - laquo;1 raquo;. Суммирование в основных разрядах дает величину

Б + (1-С1) = 1--В-С.

Если Б gt;С, тоэта величина больше единицы; при этом в основных разрядах остается \ В\ - С, а единица переносится в разряд знака, где суммирование даст

О -Ь 1 + 1 = О (mod 2),

т. е. знак laquo;+ raquo;. Если Б [ lt; С, то 1 + Б - С lt; 1, в основных разрядах остается вся эта величина, а перенос в разряд знака отсутствует; в разряде знака суммирование теперь даст 0+1+0=1, т. е. знак laquo;- raquo;. В первом случае ( Б [ С ) получаем положительный

результат сложения (знак laquo;+ raquo; и величина в основных разрядах), во втором случае (Б отрицательный результат сложения, выраженный как и требуется, дополнительным кодом (знак laquo;- raquo; и величина 1 - (I С I - I Б I) в основных разрядах).

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



примеры

(исходные числа) (Б) 0. О 1 О 1

(Q G. О 110

(цифры переноса) (0). (1)(О)(0)(0) (результат суммирования) 0. 1 О 1 1 (-1- -jj

(исходные числа) (Б) 1. 1 О 11

(С) 1. 1 О 1 О

(цифры переноса) (1). (0)(1)(0)(0)

(результат суммирования) 1. О 10 1

(исходные числа) (Б) 1.1 О 1 1

(С) 0. О 1 1 О

(цифры переноса) (1). (1) (1) (0) (0)

(результат суммирования) 0. О О О 1

(исходные числа) (В) 0. О 1 о 1

(С) 1. 1 О 1 О (Цифры переноса) (0). (0)(0)(0)(0)

(результат суммирования) 1. 1 11 1



(исходные числа) (В) 0.0101

(С) 1.1010

(обращение кода С) {В) 0. О 1 j О Д; 1

(С) о. О IWQISI (цифры переноса) (0). (1) (0) (1) ф

(результат суммирования) 0. 1 О 1 1 (+4

(исходные числа) (В) 1.1011

(С) 0.0110

(обращение кода С) (В) 1. 1 0 1 1

(С) 1. rOO 1

(цифры переноса) (1). (0)(1)(1) reg;

(результат суммирования) 1. О 10 1 \--jg-j

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

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

Кроме того, применение дополнительных кодов дает значительную экономию по времени. Очевидно, что в параллельном устройстве сложение в дополнительных кодах занимает время Ts, а вычитание Tq + ts (где Tq - время



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 [ 100 ] 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189