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

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

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

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

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

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



1), то оба эти элемента вырабатывают сигнал laquo;О raquo;, если цифры разные (О и 1 или I и 0), то один из элементов laquo;и raquo; дает сигнал laquo;1 raquo;. Выходные сигналы от всех элементов laquo;и raquo; поступают в общую схему laquo;или raquo;; если хотя бы в одном двоичном разряде сравниваемых чисел имеется несовпадение

I Отбет срабнения

I т I


1~ое число

Z-oe число

Рис. 3-4. Простейшая схема выполнения сравнения на равенство.

цифр, то элемент laquo;или raquo; дает сигнал laquo;1 raquo;; только при полном равенстве чисел на выходе laquo;или raquo; получится сигнал laquo;О raquo;.

Такая схема, полностью игнорирующая смысл разрядов сравниваемых чисел, неудобна только в тех случаях, когда допускается неоднозначность в изображении некоторых чисел. Например,-fО и -О воспринимались бы такой схемой, как неравные числа.

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



4. Умножение

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

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

Основную часть настоящей главы займут вопросы выполнения умножения чисел с фиксированной запятой, представленных позиционным способом с естественными весами разрядов в однородной п-ичной системе счисления цифрами О, 1, 2, ...,.(п- 1). Такой способ представления чисел будет предполагаться везде, где нет специальных оговорок. Фактически здесь речь будет идти о перемножении абсолютных величин чисел с фиксированной запятой, представленных прямыми кодами, или о перемножении абсолютных величин мантисс чисел с плавающей запятой (тоже в прямых кодах). Умножение чисел разных знаков и умножение с плавающей запятой рассматриваются в последних разделах главы.

4.1. Простые методы выполнения умножения

4.1.1. Основные идеи. Основная идея обычных методов вьшолнения умножения рассмотрена бегло в разделе 1.2.3.

Дополним арифметические цепи, предназначенные для вьшолнения сложения и вычитания (см., например, рис. 3-1 на стр. 294), еще одним числовым регистром, который мы



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