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

5-й цикл после 2 сдвигов А и В: в регистре В -величина В .ОООООООО

после сдвига в С .110101 (11) (четвертая цифра кор-

1 ня в обратном коде)

i = 0 (а5 = 0)

6-й цикл после 2 сдвигов А к В: в регистре В -величина В .ОООООООО

после сдвига в С .101011 (И) (пятая цифра корня

t в обратном коде)

i = 0 (Ge = 0)

Вдвигаем 6-ю цифру корня в регистр С, после чего производим обращение кода С:

после сдвига в С .010111 (11) (шестая цифра кор-

. t ня в обратном коде)

после обращения кода .101000 - результат.

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

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

На рис. 5-7 показано одно из возможных построений специального устройства для преобразования чисел из деся-



тичной системы счисления в двоичную и из двоичной в десятичную.

Устройство содержит два триггерных регистра - двоичный и десятичный. Первый из них, как показывает название, предназначен для хранения двоичных чисел; во втором каждая четверка двоичных разрядов ( laquo;тетрада raquo;) предназначается для хранения одной десятичной цифры, а десятичный регистр в целом предназначен для хранения десятичных чисел. Количество двоичных элементов различно: если двоичный регистр содержит т двоичных разрядов, то

Пе/!1/ поррепции

, РРе .

Цепи сдвига влево на 1дбоичный разряд Цепи сдвига вправо на 1дВоичныи разряд

( I -I 1 ( I. I I I ГГ

Десятичныи регистр

Цепи сдвига длеВо на (разряд

Цепи сдвига Вправо на 1озря1

двоичный/егистр

Рис. 5-7. Построение устройства для преобразования чисел из десятичной системы в двоичную и из двоичной в десятичную.

для сохранения той же точности в десятичном числе десятичный регистр должен содержать примерно mlg 2 тетрад или 4/п Ig 2 двоичных элементов (см. 1.2.2).

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



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

Рассмотрим сначала устройство цепей коррекции.

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

Следовательно:

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

Пример. Пусть в десятичном регистре находится число .3678.

В двоично-десятичной форме оно имеет вид

. .ООП ОНО 0111 1000. Сдвиг вправо на один разряд дает .0001 1011 ООН 1100.



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