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/п, или больше единицы. Обычно в машине с плавающей запятой каждая операция заканчивается автоматической нормализацией результата. Для нормализации числа его мантиссу нужно сдвигать влево или вправо до тех пор, пока ее абсолютная величина не окажется в заданных пределах; при этом каждый сдвиг мантиссы влево на один разряд сопровождается вычитанием единицы из порядка, каждый сдвиг мантиссы вправо на один разряд - добавлением единицы к порядку* Поскольку, например, сдвиг мантиссы вправо на один разряд эквивалентен уменьшению числа в п раз, а добавление единицы к порядку - увеличению числа в п раз, в процессе нормализации истинное значение числа не изменяется (с точностью до младших разрядов мантиссы), а изменяется лишь его форма.

Порядок выполнения операций над числами с плавающей запятой подробно рассмотрен в разделах 3.2 и 4.8.

, В машине с плавающей запятой легко получить очень широкий диапазон чисел. При использовании десятичной системы счисления для изображения десятичногочпорядка обычно отводится 1 ~ 2 десятичных разряда и разряд алгебраического знака; при использовании двоичной системы для изображения двоичного порядка в обьмных случаях отводят 5 6 двоичных разрядов и разряд знака.

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

2+S1-1 2,15-10 raquo;,

снизу - величиной

2-31.1/22,33.10-

или, может быть, величиной

2-32.1/2-1,17.10- .



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

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

Подпрограмма любого арифметического действия будет начинаться с разделения чисел на порядки и мантиссы; далее с порядками и мантиссами можно будет оперировать отдельно, как с числами с фиксированной запятой. Например, в подпрограмме умножения вслед за разделением сомножителей на порядки и мантиссы должны быть предусмотрены такие операции, как сложение порядков, перемножение мантисс, сравнение произведения мантисс с некоторой константой (для того чтобы выяснить, не требуется ли нормализация результата), затем - если необходимо - сдвиг произведения мантисс на один разряд влево и вычитание единицы из суммы порядков. Заканчивается подпрограмма объединением результата операций над порядками и результата операций над мантиссами в единую ячейку результата, который должен быть записан в такой же форме, как исходные числа.

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



Зато, пользуясь указанным приемом, можно для каждой задачи применять наиболее выгодное для нее распределение разрядной сетки машины. В задачах, где требуется не очень широкий диапазон чисел, но желательно получить возможно большую точность вьмислений, можно для представления порядков отвести всего 3-4 двоичных разряда, а остальные сохранить для мантисс. Если, наоборот, нужен очень широкий диапазон чисел, а точность не играет особой роли, можно отвести на порядки, скажем, половину всех разрядов числа и т. д. При использовании плавающей запятой распределение разрядов разрядной сетки заложено заранее в конструкции машины; такая машина оперирует с большим, но раз и навсегда заданным диапазоном чисел и с заранее определенной точностью. Иногда это является недостатком машины с плавающей запятой.

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

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

Поэтому области применения фиксированной и плавающей запятой можно примерно описать следующим образом:

только фиксированная запятая -

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



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