Главная > Прикладная теория цифровых автоматов
НАПИШУ ВСЁ ЧТО ЗАДАЛИ
СЕКРЕТНЫЙ БОТ В ТЕЛЕГЕ
<< Предыдущий параграф Следующий параграф >>
Пред.
След.
Макеты страниц

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

Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике

ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO

4.11. ДЕЛЕНИЕ ЧИСЕЛ В ДОПОЛНИТЕЛЬНОМ КОДЕ

Так же как и при умножении, здесь возможны два пути:

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

2) деление операндов в дополнительном коде с получением частного в требуемом виде.

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

1) делимое в процессе операции участвует всего лишь один раз, а дальше текущие остатки получаются автоматически;

2) нетрудно организовать получение цифр дополнительного кода отрицательного частного непосредственно в процессе деления путем передачи знаковых цифр остатков из СМ в регистр частного напрямую, минуя БИЦ.

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

Деление производится как обычно: знак частного определяется путем сложения знаковых цифр операндов по модулю 2 и одновременно формируется дополнение модуля делителя до двух. Цифры частного получаются, как уже известно, путем инвертирования знаковых цифр остатков от деления в БИЦ.

Ход деления обычный с учетом следующих особенностей.

Псевдознаковая цифра частного (сигнал о возможном переполнении разрядной сетки) должна получаться в этом случае равной знаковой цифре первого остатка, так как здесь производится вычитание модуля делимого из модуля делителя в силу исходного сочетания знаков операндов. Значит знаковая цифра нулевого остатка должна поступать в регистр частного, минуя БИЦ, т. е. не инвертируясь.

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

Этот случай является зеркальным отображением предыдущего: псевдознаковая цифра частного получается как обычно путем инверсии знака первого остатка, а для того чтобы получить инверсные цифры частного, нужно брать их равными знаковым цифрам соответствующих остатков без инвертирования их в БИЦ. В конце деления необходимо добавить к разряду частного единицу для одновременного выполнения округления результата и перевода его в дополнительный код.

В этом случае все цифры частного (включая псевдознаковую) должны быть равны знаковым цифрам соответствующих остатков. На первом этапе деления одновременно с определением истинного знака частного определяется величина модуля делителя, т. е. возникает ситуация, сходная с начальными условиями 2-го случая. Значит, псевдознаковая цифра частного определяется значением знаковой цифры первого остатка. Если далее производить деление обычным путем, то, как уже известно из 2-го случая, будут получаться инверсные цифры модуля частного. Следовательно, знаковые цифры остатков надо посылать в регистр частного, минуя БИЦ, так как частное здесь должно быть положительным и его дополнительный код совпадает с прямым.

Таким образом, деление чисел, представленных в дополнительном коде, производится в 3 этапа.

На первом этапе определяется знак частного путем сложения знаковых цифр операндов по модулю 2.

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

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

Пример. Заданы

I. Определяется знак частного и обращается делитель

II. Проверка на переполнение (нулевой шаг)

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

III. Определяются значащие цифры частного обычным путем.

Производим округление результата и переводим его в дополнительный код:

Пример. Заданы

I. Знак частного Модуль делителя

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

Псевдознак частного равен 0.

III. Значащие цифры частного определяются знаками остатков, так как делитель отрицателен.

Производим округление частного и перевод его в дополнительный код:

Пример. Заданы

I. Знак частного

Модуль делителя

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

Псевдознак частного равен 0.

Округление частного

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

1
Оглавление
email@scask.ru