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

ведение, так и псевдопроизведение, получаемое по ходу дела по своим абсолютньш величинам непременно меньше единицы. Для случая а gt; О это очевидно сразу: поскольку с lt; 1 и а lt; 1, то и псевдопроизведение, равное непосредственно окончательному произведению ас, меньше единицы.

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

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

Затруднение это преодолевается сравнительно легко. В начале умножения регистр В гасится, т. е устанавливается в нуль. Число, которое затем появляется в нем, является результатом многократного добавления множимого с (с определенными сдвигами). Следовательно, в ходе формирования псевдопроизведения, пока не выполнен последний корректирующий шаг (если он необходим), число в регистре В либо равно нулю (до первого суммирования), либо совпадает по знаку с множимым с. Поэтому при сдвиге В вправо нужно каждый раз устанавливать разряд знака В в соответствии с разрядом знака регистра С, а до первой выдачи суммы в регистр В (пока в регистре В находится нуль) сдвиги В не производить.

Попробуем выполнить указанным методом второй из примеров, разобранных на стр. 474.



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

Основная часть умножения:

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

.0.0000 -начальное состояние В

- 1.1001 -частичное произведение с на младшую цифру а 1.1001

1.11001 -результат первого сдвига В

, 1.111001 - результат второго сдвига Б

- 1.1001 -частичное произведение с на третью справа цифру а 1.011101

1.1011101 - результат третьего сдвига В

1.11011101- результат последнего сдвига В (псевдопроизведение)

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

1.11011101 ~~ 1.1001

0.01001101

Читателю предлагается самостоятельно разобрать несколько примеров на применение этого метода при разных сочетаниях знаков.

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



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

4.7.4. Умножение в дополнительных кодах путем последовательного преобразовения множителя*). Как и в способе, изложенном в 4.7.3, множимое будет участвовать в операции целиком, включая разряд алгебраического знака, а количество циклов умножения равно m -j- 1, где т - количество основных разрядов множителя (в предыдущем способе (т + 1)-м циклом умножения можно было считать корректирующий шаг). Однако правило умножения будет сформулировано таким образом, чтобы оно было одинаковым для всех циклов умножения, в том числе и для последнего, (т 1)-го цикла, который не выделяется в качестве корректирующего шага, выполняемого по специальным правилам и требующего некоторых специальных устройств в схеме управления.

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

1) если данная цифра непреобразованного множителя совпадает с соседней справа его цифрой, то цифра преобразованного множителя есть 0;

*) Этот способ известен в литературе под названием метода Booth и Booth - см., например, БутЭ. и Бут К., Автоматические цифровые машины, Физматгиз, 1959, стр. 64-65.



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