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

5.1.2.1 Множення чисел з в доповнювальному коді при від’ємному множнику

Второй случай, когда А - любое число, а множитель В < 0.

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

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

ПРАВИЛО. Если множитель отрицательный, то произведение чисел на сумматоре дополнительного кода получается прибавлением к произведению дополнительных кодов сомножителей поправки +1. Это инвертированное , включая і знак с добавлением 1 к младшему разряду.

Таким образом, на сумматоре дополнительного модифицированного кода получаем одновременно знаковую і цифровую части произведения.

Приклад. Умножить числа А = – 0,10111 = – 23 і

В= – 0,11001 = – 25 на ДСДК (метод 2). (– 23)*(–25)=575

Подготовительные работы.

Определим Амдоп =11.01001; Вмдоп =11.00111;

поправка = 00,10111.

Решение приведено в таблице 12.2

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

!!! Зразки виконання множення чисел з фіксованою крапкою в доповнювальному коді знаходиться у додатку Д.

!!! Зразки виконання множення чисел з плаваючою крапкою в доповнювальному коді знаходиться у додатку Е.

Практична робота № 6 Тема: Ділення чисел

6.1.1 Ділення чисел з фіксованою крапкою

Наибольшее распространение получил метод выполнения операции деления чисел путем вычитания.

На каждом шаге из делимого А вычитается делитель В (начиная со старших разрядов) столько раз N, сколько это возможно до получения остатка L меньше делителя. В частном записывается цифра, равная числу целых частей делителя N. Тогда A:B= N*B+L.

Рассмотренный метод относится к “школьным” алгоритмам деления с восстановлением остатка.

Приклад: А=0,1100100=10010; В=0,1010=1010.

Решениеприведено ниже.

При этом используют правила бинарного вычитания.

В компьютере операция вычетания заменяется на сложение в дополнительном коде, поэтому алгоритм деления отличается.

6.1.1.1 Ділення чисел із відновленням залишку

Загальний алгоритм ділення чисел із відновленням залишку

Формально алгоритм описывается следующим образом. Пусть А - делимое, В - делитель, С - частное.

A=0,α1α2...αn; B=0,b1b2...bm, C=0,c1c2...cr.

На каждом шаге определяется остаток Аii–1 – В*2-i, производится анализ, если остаток Аi>0, то старший разряд частного Ci=l, производится левый сдвиг і снос следующего разряда числа А, переход к определению следующего остатка. Если Ai<0, то Сi=0 і восстанавливается остаток Ai=Ai-1+B*2-i на следующем шаге после сдвига определяется новый остаток і т.д.

Данный алгоритм деления с восстановлением остатка реализуется на сумматорах дополнительного кода.

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

Ділення выполняется по алгоритму с восстановлением остатка на сумматоре дополнительного кода в следующей последовательности:

-определяется знак частного по формуле SgC= SgASgB;

-представление делимого і делителя в машинных кодах, когда делимое всегда, независимо от его знака, берется в прямом коде с положительным знаком, а делитель всегда, независимо от его знака, берется в дополнительном коде с отрицательным знаком;

-устранение дробной части в делителе, путем переноса запятой вправо на n разрядов (по аналогии с десятичной системой счисления). Чтобы дробь не изменилась, в делимом также переносят вправо запятую на n разрядов;

-начиная со старших разрядов, к делимому прибавляют делитель в дополнительном коде, что равносильно вычитанию из делимого делителя і анализируют знак промежуточного остатка:

1) если знак промежуточного остатка 00 (положительный), то в регистр частного РгС записывается 1, начиная со старшего разряда. Остаток сдвигается на один разряд влево (просто знаковую точку перенести вправо на один разряд), сносится последующий разряд делимого не участвующий до этого в делении. После этого, промежуточный остаток подготовлен к последующему прибавлению делимого в дополнительном коде;

2) если знак промежуточного остатка 11 (отрицательный), то в регистр частного РгС записывается 0, начиная со старшего разряда. Остаток восстанавливается путем прибавления к нему делителя в прямом коде с положительным знаком. Восстановленный остаток сдвигается влево на один разряд (точку, отделяющую знак, перенести вправо на один разряд), сносится последующий разряд делимого не участвующий до этого в делении;

-действия пункта 4 повторяются до получения машинного нуля или заданной точности вычисления (количество разрядов дроби после запятой целой части числа). Запятая дроби устанавливается в частном после сноса последнего разряда целой части делимого.

-результат деления представлен в регистре частного в прямом коде. Знак результату присваивается в соВідповідьствии с пунктом 1.

Приклад. Разделить числа А= – 0.100111 і В= – 0.11. Разрядность , регистров =6.

Решение: 1.Определяем знак частного: SgC=l l=0. Знак положительный.

2.Записываем машинные изображения чисел.

Ампр. = 00.100111; Вмпр. = 11.11; Вмдоп.= 11.01;

3.Выполнить последовательность действий над числами по методу алгоритма с восстановлением остатка (таблица 13.1).

В таблице 13.1 вертикальными стрелками показаны сносы последующих разрядов делимого в промежуточные остатки. Горизонтальные стрелки отражают разряды записи результата в регистр частного Рг.С. Единицы переполнения, получаемые после суммирования, пропадают, т. к. используется сумматор дополнительного кода. Вместо выполнения операции левого сдвига остатков, переносится на один разряд вправо точка, отделяющая знак числа, при этом, первый разряд знака пропадает. Что равносильно сдвигу.