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

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

Только в сравнительно редких случаях равенства порядков нельзя сказать заранее, какая из мантисс больше. Но и при этом второй такт обращения кодов и второй такт суммирования (или второй период числа, если речь идет о последовательных устройствах) потребуются не в Vs всех случаев (как мы имеем при операциях с фиксированной запятой), а только в среднем в случаев, потому что комбинации чисел, в которых сумма мантисс превышает по абсолютной величине единицу, не исключаются заранее при программировании (см. рис. 3-2 на стр. 295).

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

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

3.2.4. Детали выполнения нормализации результата сложения-вычитания. Как уже говорилось, результат сложения-вычитания мантисс по абсолютной величине заключен в интервале (2, 0].

Если мантисса результата до нормализации больше единицы (но при этом всегда меньше двух), то нормализация состоит в сдвиге мацтиссы на один разряд вправо.



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

Признаком переполнения является наличие знака laquo;-[- raquo; у порядка до суммирования и появление переноса единицы в знаковый разряд при выполнении суммирования. Иначе о переполнении разрядной сетки порядков можно судить по тому, что после добавления единицы порядок результата содержит laquo;О raquo; в добавочном разряде (слева от знакового) и laquo;1 raquo; в знаковом разряде (как и выше, предполагается, что применены дополнительные коды, построенные по 1-му варианту).

При обнаружении переполнения разрядов порядка в этом случае дальнейшие вычисления нуЖно остановить: результат полной операции сложения-вычитания с плавающей запятой не помещается в разрядной сетке машины. Вместо остановки вычислений могут быть предусмотрены другие варианты поведения машины в случае переполнения; об этом говорилось в 3.1.1. (стр. 292).

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

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

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



жег разместиться в разрядной сетке порядков - без учета, разумеется, добавочного разряда). Можно сказать, что здесь имеет место отрицательное переполнение разрядной сетки порядков.

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

.При появлении отрицательного переполнения в порядках можно поступать различно.

Иногда в этом случае прерывают нормализацию и разрешают результату участвовать в последуюидах операциях в ненормализованном виде.

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

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

*) Во всем предыдущем изложении мы совсем не касаемся вопро-: са об операциях с условным (нормализованным) изображением нуля. Если бы, скажем, как говорилось в 3.2.1, нуль изображался бы числом

2~-2 (максимальный отрицательный порядок и мантисса Va), то

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



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