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

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

Разрядная сетка машины разделена на две части; в одной из них хранятся порядки чисел ( laquo;разряды порядка raquo;), Б другой - мантиссы чисел ( laquo;разряды мантиссы raquo;). Например, при размещении числа р в каком-либо регистре в разрядах порядка записывается величина b (со своим алгебраическим знаком), а в разрядах мантиссы - величина В (тоже со своим знаком, который является знаком всего числа Р).

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

В дальнейшем мы будем называть тот регистр арифметического устройства, в который первоначально принимается число р и в котором в конце образуется результат, регистром р, а тот регистр, в который первоначально принимается число у,- регистром у. Разряды порядков регистров р и 7 мы будем иногда называть регистрами порядков



b и с, а разряды мантисс регистров я у - соответственно регистрами мантисс В я С. Соответственно будут применяться термины сумматор порядков и сумматор мантисс.

I Выполнение сложения или вычитания чисел с плавающей запятой должно начинаться с выравнивания порядков. Старший разряд мантиссы числа р, которому в и з о б р а-жении мантиссы приписывается вес Va- в действительности - если учитывать порядок числа - имеет

вес -2,- старший разряд мантиссы числа -у в действитель-

ности имеет вес - 2= и т. д. Прежде чем складывать или

вьиитать мантиссы, нужно поставить разряды с одинаковыми весами друг против друга. В этом и состоит смысл выравнивания порядков.

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

После того как порядки выравнены, можно произвести сложение или вычитание мантисс.

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

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



в интервале (2, 0]. Нормализовать результат - это значит ввести абсолютную величину его мантиссы в интервал (1, V2I. одновременно изменив порядок так, чтобы общая величина результата не изменилась. Если мантисса результата до нормализации находилась в интервале (2, 1], то нормализация результата состоит в сдвиге мантиссы вправо на один разряд и одновременном добавлении единицы к порядку; если до нормализации мантисса результата меньше V2. то ее придется один или, может быть, несколько раз сдвигать влево, каждый раз вычитая по единице из порядка - до тех пор, пока цифра laquo;1 raquo; не появится в старшем из основных разрядов мантиссы (если мантисса изображается прямым кодом).

Итак, выполнение сложения-вьиитания с плавающей запятой состоит фактически из четырех этапов:

(а) выравнивание порядков;

(б) сложение-вьмитание мантисс;

(в) восстановление старшего порядка;

(г) нормализация результата.

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

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

3.2.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