Разделы
Рекомендуем
|
Автоматическая электрика Автоматика радиоустройств Преобразуя обратный код [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. Перемножаем мантиссы.
|
© 2010 KinteRun.ru автоматическая электрика
Копирование материалов разрешено при наличии активной ссылки. |