Разделы


Рекомендуем
Автоматическая электрика  Автоматика радиоустройств 

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 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270

Преобразуя обратный код [Xi+x2]06p= = 1,01110, находим: х, +х2=-0,10001, что и требуется.

Xi = -0,10111 [xi] обр = 1,01000; х2 = -0,00110 [х2]0бр = 1,11001; Xi + x2 = - 0,11101; [*ilo6p + Мобр = [Xi + х2]обр = 1,01000

1,11001

11,00001 + 1-1 1,00010

Таким образом, после циклического переноса получено число 1,00010. Это число есть искомая сумма Xi+x2=-0,11101 в обратном коде.

Дополнительный код. Дополнительный код числа х обозначим символом МдоП.

Если х=+0, Xi, х2 . . . х , то по определению

[х]поп - 0, XiX2 ... Хп,

х]доп - X.

Если х-- 0, XiX2... хп, то

ft г

Мдоп = х1 х2 хп<

где после запятой стоит дополнение \х\ до 1, т. е. число

1 - jc[ = 1 + х.

В знаковом разряде отрицательного числа ставится единица. Тогда при х<0

=J + * + 1 = 2 + х = 2-

дополне- знак числа ние до 1

Таким образом, для дополнительного кода имеем: при х>0

Мд°п - х;

при х<0

Мдоп = 2 + х = 2 - ]х\. (24-71)

В дополнительном коде нуль имеет только одно изображение

[±0]Доп = 0,00 ...0,

так как число 1.00...0 изображает отрицательную единицу

[-1]дои = 1,00 ...0.

Пример.

х = -0,10101. Мдоп = 2 - 0,10101 = 10 - 0,10101 = = 1,01011.

Можно показать, что справедливо равенство:

Мдоп = Мобр + 2- .

Отсюда вытекает простое правило для получения дополнительного кода.

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

1 Пример.

х = - 0,010110. [х]доп = 1,101001 +0,000001 = 1,101010.

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

Рассмотрим четыре частных случая.

1. х,>0; х2>0; 0<X!+x2<l. По формуле (24-71) имеем:

М]доп + [Хг]доп - Xi-\-X2 - = [Xi + ХгЗдоп-

2. Х]<0; х2>0 и х,+х2>0. По формуле (24-71) запишем:

[яч]дон = 2 + Xj; [Х2]доп == х2;

сложим дополнительные коды чисел Х\ и х2:

[Xl]non + [X2]Boir = 2 + х, + х2 =

= (10) +Xi +х2. . (24-72)

Из формулы (24-72) видно, что для получения суммы (Х!+х2) необходимо вычесть число 2. Это можно осуществить путем простого отбрасывания единицы второго разряда перед запятой.

Пример.

х, = -0,00100 х, + х2 = +0,10011;

х2 = -0,10111 [х, + х2]д0п = 0,10011.

[Xi]Bon + [х2]доп = (10) + Xi + х2 =

= (10) +0,10011 = 10,10011.

I

отбросить

Тогда

М]доп + [Х2]доп = [Xi +- Х2]доп = .

= 0,10011.

3. х,<0; х2>0 и -1<х,+х2<0. Согласно формуле (24-71) запишем:

[Xi] доп == 2 + Xi;

[х2]доп = х2;

[xi]Hon+ [х2]д0п =

= 2 + X! + х2. (24-73)

В правой части этой формулы стоит дополнительный код отрицательной суммы двух двоичных чисел. Пример.

х, = -0,10111, X! + х2 = -0,10011; х2 = +0,00100, [х, + х2]Доп = 1,01101. По формуме (24-71) имеем:

[Х1]доп + [Х2]доп = (10) + Xi +х2 = = (10) -0,10011 = 1,01101,



т. е. получен дополнительный код отрицательной суммы.

4. Xi<0; *2<0 и Xi+x2<0. По формуле (24-71) запишем:

[*1]доп = 2 + *г,

[х2]Дои = 2 + х2;

Мдоп + 1х2]ДОп = 2 + х1 + 2 + х2 =

= 2 + (2 + хч + х,). (24-74)

дополнительный код отрицательной суммы № + Хг)

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

Xi=- 0,10111, Xi + х2 = -0,11011; х2 = -0,00100, [xi + ХзЬкш = 1,00101. По формуле (24-74) имеем: Идол + Мдоп =10 + 10-0,11011 = = 10+ 1,00101 = 11,00101 = 1,00101

I

а) 0 < xt < 1

о <

отбросить

дополнительный код отрицательной

суммы С*1+*г)

Сформулируем теперь общее правило сложения дополнительных кодов.

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

Признаки переполнения

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

\Ь + *Л<1.

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

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

Xi< I ]

х2 < 1 J

+ х2> 1.

В этом случае признаком переполнения будет появление единицы в разряде знака суммы.

Пример.

Xi= 0,10111 0,10111

Xi + х2 = + хг= 0,11000 0,11000

1,01111

б) - 1 < Xt < 0

1*1 + х2\ > 1.

- 1 < хг < 0

В этом случае признаком переполнения будет появление нуля в разряде знака суммы. Пример.

xt =- 0,10111, Иобр = 1,01000;

х2=- 0,11000, [х2]обр= 1,00111.

Сложим обратные коды по правилу сложения обратных кодов:

1,01000

l*l]o6p + Мобр = +

1,00111

10,01111

+ 1 ,1

0,10000

Рассмотрим тот же пример в дополнительном коде

[xibon = 1,01001;

[х2]доп = 1,01000;

1,01001

Мдоп + [Удоп = +

1,01000

10,100010,10001

отбросить

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

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

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



Пример.

Число xi = +0,11101 в модифицированных кодах будет иметь вид:

[XiJep-Мод : [Xi] обр.мод ==s = Мдоп.мод = 00,11101.

Число Xi=-0,11101 представляется в виде:

в прямом модифицированном коде

Мнр.мод = 11,11101; в обратном модифицированном коде

Мобр.мод = 11,00010;

в дополнительном модифицированном коде

доп.мол -

11,00011.

Для отрицательных двоичных чисел формулы, определяющие обратный модифицированный код, будут иметь внд:

Мовр.мод = 2 + * - 2~ + 2 =

= 4 + х--2-

Мобр.мод = (ЮО) +х- (10)-,

где (100)-число 4, представленное в

двоичной системе счисления;

(10)-число 2, представленное в

двоичной системе счисления.

Аналогично дополнительный модифицированный код определяется равенством

Мдои.мод, = 2+х+2=4+*

МдоЯ.мод = (ЮО) + X. i

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

Признаком переполнения разрядной сетки при сложении двух чисел, представленных модифицированным кодом, является возникновение комбинации двоичных цифр вида 01 или 10 в знаковых разрядах.

Пример.

I. 0 < Xi < 1; 0 < х2 <1; Xi + х2 > 1; Xl = +0,10111 [лчЬр.мод = 00,10111; х2 = +0,11000 [х2]Яр.МОд =00,11000; [ж1]пр.мод + [пр.мод =

= х1+х2 = + 00,10111 00,11000 01,01111

2. - 1 < xt < 0, \xi + х2 > 1; - 1 < х2 < 0

х, = -0,10111; х2 = -0,11000. В обратном модифицированном коде обр.мод - 11,01000 [*2]обр. од = 11,00111;

[Мобр.мод + [х2]обр.мод = Г > 01000

11,00111

110,01111

10,10000

В дополнительном модифицированном коде

Мдоп.мод = 11,01001; [*г]д0п.мод = 4,01000; [дол-мод + Г*2]доп.мод =

=+ 11,01001 11,01000 110,10001-10,10001

отбросить

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

0 + 0 = 0 1+0=1 0+1 = 1

1 + 1=0

Такое сложение называется сложением по модулю 2, которое будем обозначать (1 + I]mod2=0.

Мантиссы чисел перемножаются как обычные числа в соответствии с таблицей двоичного умножения:

0X0 = 0

0X1=0

1X0 = 0

1X1 = 1

Умножение может начинаться как с младших, так и со старших разрядов множителя.

Пример.

Xi = +0,100111, [xi]hp = 0,100111, Х2 = +0,111011, [хг]яр = 0,111011.

Перемножаем мантиссы.




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 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270

Яндекс.Метрика
© 2010 KinteRun.ru автоматическая электрика
Копирование материалов разрешено при наличии активной ссылки.