Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_Практика_Основи-програм-інженерії_(1+3кур...doc
Скачиваний:
7
Добавлен:
07.05.2019
Размер:
7 Mб
Скачать

4.1.1.2 Додаванння чисел з фіксованою комою у додатковому коді

Теорема: Якщо результат суми додаткових кодів чисел негативний, то результат представлений в додатковому коді. Якщо результат суми додаткових кодів чисел позитивний, то результат представлений в прямому коді.

Розглянемо деякі випадки:

1. A>0, B>0, а A + B<1 числа позитивні і не має переповнення. Для цього випадку Aдоп = А, Вдоп = В , то Адоп + Вдоп = А + В = [A + B]доп – результат позитивний.

Наприклад: А = 0,1010; В = 0,0100

Спр.=0.1110

2. A<0, B>0, а |A|B. Для цього випадкуАдоп = q + |-A|, Вдоп = В тоді Адопдоп = =q + |A| + B = [A + B]доп – результат від’ємний.

А = – 0,1011; В = 0,0100

Результат отриманий від’ємний, це означає, що він представлений в додатковому коді і його необхідно перевести в прямий, щоб отримати істинний результат. Переведення числа з додаткового коду в прямий здійснюємо по наступному алгоритму: всі розряди числа (окрім знакових) інвертуємо (тобто береться обернений код результату) і у молодший розряд додається +1. Знак зберігається.

3. A<0, B>0, а |A|<B. Для цього випадку Адоп = q + |A|, Вдоп = В, тоді Адоп + Вдоп = q + |A| + B. Оскільки значення цієї суми більше q, то з'являється одиниця перенесення в знаковий розряд, що ідентично вилученню із суми q одиниць, тобто результат дорівнює:

Адоп + Вдоп = А + В=Спр.

Наприклад. А = -0,0100; В = 0,1011.

4. A<0, B<0, а |A + B|<1. Для цього випадку Адоп = q +(-А) Вдоп = q +(-В), тоді Адоп + Вдоп = q +(-A) + q +(-B) = [A + B]доп – результат від’ємний і з’являється одиниця переносу із знакового розряду.

Наприклад. . А = – 0,0100; В = – 0,1011.

4.1.1.3 Додаванння чисел з фіксованою комою у оберненому коді

Теорема: Якщо результат суми обернених кодів чисел від’ємний, то результат представлений в оберненому коді. Якщо результат суми додаткових кодів чисел позитивний, то результат представлений в прямому коді.

Розглянемо деякі випадки:

1. А>0, В>0, А+В<1 т.б. обидва числа позитивні. Тоді Аобр. + Вобр = [A + B]обр = А + В, т.б. додавання відбувається

в прямих кодах.

2. A<0, B>0, |A|>B, де Аобр = q - q-n + A, Вобр = В, тоді Аобр + Вобр = q - q-n + A + B = [A + B]обр, т.б. результат від’ємний і в оберненому коді, необхідно повертатися до Спр шляхом інфверсії розрядів числа.

Наприклад:

А = – 0.1011 – 11 В = 0.0111 +7 .

3. A<0, B>0, A<B, тут Аобр = q - q-n + A. Тоді Аобр + Вобр = q - q-n + A + B. Так як сума (А + В) позитивна, то права частина цього виразу стає більше q, що викликає появу одиниці перенесення із знакового розряду в молодший розряд числа (величина перенесення при цьому дорівнює q - q-n), тоді Аобр + Вобр = А+В. Результат позитивний. Це і є Спр.

Наприклад:

А = -0.0101 (-5) В = 0,0111 (+7)

4. А<0, В<О, |А + В|<1, тут Ao6p = q - q-n + A, Вобр= q - q-n + B. Тоді Аобр + Вобр = q - q-n+A+ q - q-n +B. Тут зявляється одиниця переноса, что ідентично вилученню із суми q - q-n, т.б. Аобр+ Вобр= q - q-n + A + B=[A + B]o6p.

Наприклад:

А = -0,0101 ; В = -0,1000 Знайти суму, використовуючи обернений код.

Доодаємо машинні зображення6

4.1.2 Переповнення розрядної сітки

Части при додаванні чисел із однаковими знаками, представленими ув формі з фіксованою комою, виникає переповнення розрядної сітки. При цьому, щоб уникнути спотворення результату додавання, автомат повинен фіксувати переповнення і проводити правий зсув числа.

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

Приклад.

А=0,1010; В=0,1101.

Получен искаженный результат, из-за потери переноса.

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

Приклад: А=0,1011, В=0,1010

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

Приклад:

1).

А=0,0111, В=0,1101

Знак числа искажен.

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

Чтобы фиксировать переполнения разрядной сетки в ДСПК, ДСОК, ДСДК, вводится вспомогательный разряд в знаковую часть изображения числа, который называют разрядом переполнения числа. Такое представление числа называется модифицированным (см. рисунок 8.1)

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

Приклад: 1) А=0,1011,В=0,1010.

Здесь признаком переполнения является 1 в знаковом разряде. По этому признаку производится сдвиг числа вправо с одновременным увеличением коэффициента формата Кф на +1 і восстановлением (по значению Sg1) знака 00 числа, проверяется нормализация числа (наличие 1 после знака числа).

2) А=-0,1011, В=-0,1001. Перетворимо в машинную форму: Ампр.=11.1011, Вмпр.=11.1001. Так как оба числа отрицательны і операция сложения выполняется на сумматоре дополнительного кода, то в сумматор числа поступают в дополнительном коде.

Анализ разрядов знака результата (10) показал, необходимость восстановления его (11), сдвигая число вправо на один разряд, с одновременным увеличением коэффициента формата Кф на +1. Результат отрицательный, і поэтому, представлен в дополнительном коде. Поэтому, число преобразуется в прямой код через обратный с добавлением в младший разряд +1.

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

Для чисел с плавающей точкой справедливо условие нормализации: q-1< | mA| < 1 (9.1),

где q - основание системы счисления; mA - мантиссы числа.

Это нормализованное представление числа, і оно требует, чтобы в старшем разряде мантиссы двоичного числа стояла единица. Для двоичной системы это будет означать, что мантисса всегда находится в пределах: 0,5|mA|< 1 (9.2)

При выполнении автоматом операций над числами, нормализуют как входные слагаемые, так і выходной результат.

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

Модифицированный сдвиг - операция над модифицированным изображением числа, выполняется по модели таблицы 9.2.

Величина  зависит от кода. Для дополнительного кода ε = 0, для обратного кода  = 1.

При сложении чисел, результат сложения может выйти из нормализации как справа уравнения (9.1) так і слева.

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

Признаком нарушения нормализации числа слева δ (когда результат по абсолютной величине оказывается меньше 1/q ) является наличие одинаковых комбинаций в разряде переполнения і старшем разряде цифровой части сумматора.

Итак, рассмотрим сложение чисел А = mApA і В = mBpB имеющих одинаковый порядок pA=pB Обе мантиссы удовлетворяют условию нормализации.

Сложение мантиссы осуществляют на сумматоре ДСДК или ДСОК по правилу сложения чисел аналогично в формате с фиксированной запятой. Если после сложения мантисса результата удовлетворяет условию нормализации (т.е. δ = 0, γ=0), то к этому результату приписывается порядок любого из операндов. В противном случае производится нормализация числа.

Приклад 1. Найти сумму чисел

А=0,1000*2-3 і В=-0,1011*2-3

Мантиссы і порядок обрабатываются на ДСДК.

Здесь Sg2&R1=11 т.е.δ =1, γ=0. Значить, необходим сдвиг мантиссы влево на 1разряд.

[m’c]=11,1010 Проверяем. Снова δ=1, γ=0. Значить, необходим еще сдвиг влево на 1 разряд.

[m"c]доп. 11, 0100 Проверяем. Все в порядке δ= 0, γ=0.

Одновременно со сдвигом нужна коррекция порядка на

–2(10)=1.010(2) (что равносильно прибавлению дополнительного кода 1.110).

тогда число равно: