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/10, то в этом случае после первого цикла в десятичном регистре получится число 0,5. Таким образом, в результате первого цикла в десятичном регистре получится величина 2~. При выполнении второго цикла эта величина в десятичном регистре делится пополам и к ней аналогично предыдущему добавляется величина a-i 2-, так что в десятичном регистре псшучится сумма Um-i 2 + йт 2. После т циклов в нем образуется величина ai-2--\-a-2-\-. -\-а,п-2, т. е. исходное число, но в десятичном представлении, в коде laquo;8, 4, 2, 1 raquo;. Если его необходимо получить в коде с излишком 3, то в заключение операции производится добавление троек по всем тетрадам (через цепи коррекции).

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

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

Наоборот, для перевода целого числа из двоичной системы в десятичную нужно исходное число поместить в двоичный регистр, десятичный регистр предварительно погасить, а затем действовать так же, как при переводе дробного числа из десятичной системы в двоичную; результат в десятичном регистре получится в коде с излишком 3, и для перехода к простой двоично-десятичной записи (к коду laquo;8, 4, 2, 1 raquo;) придется в конце операции произвести вычитание троек по всем тетрадам.

Читателю предлагается самостоятельно провести сопоставление тех операций, которые производятся при этом в рассматриваемом устройстве, с теми алгоритмами перево-



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

С некоторыми дополнениями устройство рис. 5-7 можно приспособить и для перевода чисел с плавающей запятой из одной системы счисления в другую. Та часть, которая изображена на рис. 5-7, может быть непосредственно использована для преобразования мантисс чисел с плавающей запятой. Однако нужно учесть, что с мантиссами придется производить еще некоторые дополнительные операции. Дело в том, что число а, записанное в нормальной форме, в двоичной системе имеет вид

а = 22,

где -двоичный порядок (целое число), Лг -двоичная мантисса, 1/2 lt; Лг lt; 1. а в десятичной системе

а=10 deg; raquo;Лп,

где flio - десятичный порядок (целое число), Лщ - десятичная мантисса, 1/10 Лщ lt;С 1- Ясно, что в общем случае ф Лю.

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

Пусть задано десятичное число с плавающей запятой а = 10 deg; Лщ; как порядок (а), так и мантисса (Л) заданы в десятичной системе. Преобразование числа в двоичную систему состоит в вычислении двоичного порядка а, который сам должен быть представлен в двоичной форме, вычислении новой мантиссы Л 2 (удовлетворяющей условиям

20=2 = 10 raquo; ЛI lt; Л21 lt; I) и преобразовании найденной величины Л2 в двоичную систему счисления.



Поместим в десятичный счетчик, Л - в десятичный регистр (имеющийся на рис. 5-7), а двоичный счетчик и двоичный регистр погасим.

Если gt; О, то будем дальше действовать следующим образом. Умножим величину Лна 10,т. е. произведемвдеся-тичном регистре сдвиг на 4 двоичных разряда влево (для этого мы, собственно, и ввели в десятичном регистре дополнительную тетраду слева от старшего разряда); одновременно вычтем единицу в десятичном счетчике. Затем произведем несколько делений пополам в десятичном регистре (каждое деление пополам - это сдвиг вправо на 1 двоичный разряд и коррекция). Деление пополам будем делать до тех пор, пока число в десятичном регистре не станет снова меньше единицы; для этого может потребоваться от одного до четырех делений пополам, так как результат умножения Л, на 10 заключен в интервале 1 10 Aio lt;i 10; при каждом делении пополам будем добавлять по единице в двоичный счетчик. Затем снова умножим на 10 число, имеющееся в десятичном регистре, уменьшив при этом на единицу число в десятичном счетчике, и снова произведем ряд делений пополам в десятичном регистре, добавляя каждый раз по единице к двоичному счетчику, и т. д.- до тех пор, пока в десятичном счетчике не останется нуль. В результате в двоичном счетчике получим величину двоичного порядка а, а в десятичном регистре - величину двоичной мантиссы А, выраженную пока в десятичной системе. Затем остается только в обычном порядке преобразовать А в двоичную форму.

Если - lt; О, то вместо умножений на 10 и делений пополам нужно будет выполнять деления на 10 (каждое из которых представляет собой сдвиг в десятичном регистре на 4 двоичных разряда вправо) и удвоения числа.

Аналогичные операции выполняются и при преобразовании чисел из двоичной системы в десятичную. Но при этом операции над порядками удобнее производить после преобразования двоичной мантиссы в десятичную форму, так как именно в десятичном регистре легко выполняются и умножения и деления на 10, и умножения и деления на 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