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

псевдопроизведения находятся в регистре В, а множимое - в регистре С, добавление дополнительного кода от изображения с (в том случае, когда а lt;0) выполняется очень легко. Труднее выполнить (при с lt; 0) добавление к псевдопроизведению дополнительного кода от множителя а: к концу умножения величина множителя вообще не сохраняется, а регистр А занят младшими разрядами псевдопроизведения.

В связи с этим последний корректирующий шаг - добавление дополнительного кода от изображения множителя в том случае, когда множимое отрицательно, выполняется отчасти в ходе умножения. Делается это следующим образом. В обычном процессе умножения множимое (его абсолютная величина с) добавляется к предыдущей сумме частичных произведений каждый раз, как очередная цифра множителя есть 1; если очередная цифра множителя есть О, то к предыдущей сумме частичных произведений не добавляется ничего. Пусть теперь в последнем случае вместо того, чтобы ничего не добавлять, будем добавлять знаковый разряд множимого. 2 raquo;тот знаковый разряд каждый раз попадает в знаковый разряд регистра В (слева от запятой), а потом участвует в сдвигах в регистре В на общих основаниях. В конце операции (после Последнего сдвига) знак В нужно будет установить по общему правилу.

Если множимое положительно, то его знаковый разряд содержит цифру laquo;О raquo;, и ничего лишнего к сумме частичных произведений фактически не добавляется. Если же множимое отрицательно и его знаковый разряд содержит цифру laquo;1 raquo;, то в результате описанного процесса окажется, что к произведению добавлен обратный код от изображения множителя.

Действительно. Если, например, т-й (младший) разряд изображения множителя содержит laquo;О raquo;, то в первом цикле умножения будет добавлена лишняя единица в знаковый разряд регистра jB; после т циклов умножения, в каждом из которых выполняется один сдвиг вправо в регистре В, эта единица передвинется в т-й разряд произведения. Вообще если laquo;О raquo; содержится в t-м разряде изображения множителя, то лишняя единица добавляется в знаковый разряд регистра В в (т-0-м цикле умножения; после этого до конца умножения остается еще i сдвигов, в результате которых эта единица передвинется в i-u разряд произведе-



ния. Лишние единицы будут, таким образом, добавлены во все те разряды произведения, в которых изображение множителя содержит нули; иными словами, к произведению будет добавлен обратный код от изображения множителя.

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

Повторим с этим видоизменением второй из примеров, рассмотренных на стр. 474.

П р и м е р. (- 7/16) X (- 11/16) = -f 77/256, - 7/16=1.1001, - 11/16=1.0101, 77/256 = 0.01001101.

Вместе с перемножением величин, представленных основными разрядами сомножителей, одновременно частично выполняется коррекция:

1.1001 - множимое .0101 -основные разряды множителя

1001 10000 1001 10000

11001101 - псевдопроизведение с добавленным обратным кодом от изображения множителя

Поскольку множимое отрицательно, добавляем еще одну единицу т-го разряда (чтобы к псевдопроизведению был добавлен не обратный, а дополнительный код от изображения множителя):

.11001101

+ 1

.11011101



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

11011101

.0110 - обратный код изображения множимого (. 1001) 1 - единица для получения дополнительного код а

.01001101

4.7.3. Вариант умножения в дополнительных кодах с одним корректирующим шагом. Как и в 4.7.2, мы будем для определенности полагать, что множительное устройство построено в соответствии с рис. 4-2, а на стр. 350, хотя описываемый ниже способ умножения в дополнительных кодах годится и в других случаях.

Основная идея состоит в том, что в главной части процесса умножения по-прежнему будут использоваться только разряды, представляющие абсолютную величину множителя (без разряда алгебраического знака), но во всех суммированиях, выполняемых по ходу умножения, множимое с будет участвовать полностью, так что при любом суммировании учитываются знаки чисел, находящихся в регистрах В и С. Так как основные разряды в изображении множителя а представляют либо величину \ а\ (если g gt; 0), либо величину 1- а(если а lt; 0), то результат этого процесса (псевдопроизведение) равен либо

с I а I = ш (если а gt; 0)

либо

с(1 - \а\) = с - с\а \ = с +ш (если а lt; 0).

В первом случае получаем сразу готовое произведение, во втором случае (если а lt; 0) нужно выполнить один корректирующий шаг - вычитание из псевдопроизведения множимого с. При выполнении вычитания обьиным образом учитываются алгебраические знаки псевдопроизведения и множимого. Таким образом, в конце умножения теперь требуется максимум один корректирующий шаг, а в среднем Va корректирующего шага - вдвое меньше, чем в том способе, который рассмотрен в 4.7.2.

Трудность, которая возникает при осуществлении этого алгоритма, состоит в следующем. Как окончательное произ-



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