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

наименьшее по абсолютной величине отрицательное число, равное -0,001, имеет вид

/.998.

Аналогичным образом в разрядной сетке примера 2 положительное число -fVie записывается в виде

в прямом коде...........-f.lOll,

в дополнительном и обратном коде......0.1011;

отрицательное число - /je имеет вид

в прямом коде........-.1011,

в дополнительном коде........1.0101,

в обратном коде...........1.0100;

вес добавочного разряда здесь равен -1-(1-Vie) = = -Vie (по двоичной системе -0,1111); нуль в обратном коде может быть записан либо в виде 0.0000, либо в виде 1.1111.

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

Например, в разрядной сетке примера 1 наименьшее по абсолютной величине отрицательное число, как указывалось, записывается в виде

/.998.

Применяя один раз правило прямого счета, найдем изображение ближайшего большего числа:

. /.999.

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

С.ООО.



Только следующее применение правила прямого счета дает изображение ближайшего большего числа:

0.001.

Аналогичная картина наблюдается и при обратном счете.

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

1.5. Указание положения запятой

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

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

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



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

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

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

Пусть, например, разрядная сетка машины содержит 4 десятичных разряда,.и пусть нам нужно найти произведение 38,418 X 0,042363. (Точное значение этого произведения равно 1,627501734.) Предположим, что запятая в разрядной сетке фиксирована перед старшим из разрядов, т. е. что машина оперирует только с дробными числами. Исходные числа могут быть введены в машину только с некоторыми коэффициентами (число 38,418 иначе просто нельзя разместить в разрядной сетке). Чтобы точность была возможно большей, выберем эти коэффициенты так, чтобы все цифры разрядной сетки были значащими; для этого первый сомножитель введем с коэффициентом 10 , второй сомножитель- с коэффициентом 10; округление придется провести только в последнем разряде. Таким образом, в



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