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 разряд вправо при выполнении нормализации вносит в ее абсолютную величину либо нулевую погрешность (если выдвигается 0), либо погрешность, равную -V2 младшего разряда (если выдвинута цифра 1). Если бы взамен выдвинутой за пределы регистра единицы мы всегда добавляли лишнюю единицу младшего разряда, то в итоге погрешность всегда была бы либо О, либо +V2 младшего разряда, что ничем не лучше, чем О или - Уг-

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

Необходимо заметить еще, что когда при нормализации выполняется сдвиг мантиссы результата вправо на 1 разряд, то та погрешность, которая имелась в мантиссе ранее (до + /2 младшего разряда, если после выравнивания порядков производилось округление), при сдвиге уменьшается вдвое. На нее накладывается дополнительно новая погрешность, в + Vz младшего разряда, возникающая при нормализации. Таким образом, суммарная погрешность в этом случае становится равной +/4 младшего разряда.

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



цогрешностей сдвиг влево., конечно не вносит. Однако тут возможны неприятности другого рода.

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

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

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

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

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



нительно*). Просто программист должен учитывать, что для достижения достаточной точности нужно несколько отойти от нижнего предела допустимых чисел.

3,3. Операции сравнения

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

В литературе по вычислительной технике имеется некоторый разнобой в использовании термина laquo;сравнение raquo;. Иногда сравнением называют поразрядную операцию (в двоичной системе счисления), дающую в любом из разрядов результат нуль, если в двух исходных числах цифры данного разряда не совпадают между собой, и единицу - если совпадают. Мы же будем относить термин laquo;сравнение raquo; к операции, выполняемой над полными числами, а не над их отдельными разрядами; при этом ответ сравнения (результат операции) имеет вид одноразрядного двоичного или, может быть, троичного числа. Смысл операций сравнения, как мы их понимаем, состоит в том, чтобы ответить, какое из двух заданных чисел больше, а какое меньше. Получив два исходных числа (скажем, В и С), арифметическое устройство должно, например, дать ответ одного вида, если В gt; С, и ответ другого вида, если В lt; С. Иногда ответ второго вида дается только в случаях В lt;.С, но может быть сформирован еще и ответ третьего вида - в случае Б = С; иногда же требуется, чтобы ответ одного вида выходил в случае ВфС, а ответ другого вида- в случае В = С ( laquo;сравнение на равенство raquo;). Модификацией этих операций является сравнение только абсолютных величин чисел - без учета их алгебраических знаков. Если в машине предусмотрено и полное сравнение чисел, с учетом знаков, и сравнение абсолютных величин, то первое

*) Если процесс нормализации не приводит к получению нормализованного числа, то перед искусственной установкой нуля можно попытаться добавить к мантиссе результата V4 (единицу второго разряда); если и при этом не появится единица в первом (старшем) разряде мантиссы, то тогда уже наверняка нужно установить в результате laquo;О raquo;. Это дало бы более симметричный диапазон ошибок. :



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