Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СОДЕРЖАНИЕ 3 (2).doc
Скачиваний:
40
Добавлен:
31.08.2019
Размер:
5.65 Mб
Скачать
      1. Математические основы некоторых способов деления двоичных чисел

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

Например, 101.11001/10.011=10111001/1001100. Поэтому в дальнейшем будем рассматривать способы деления целых.

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

(4-19)

где – частное с индексом старшего значащего разряда не превышающем ;

– остаток от деления на ;

– индекс младшего разряда частного .

Остаток должен удовлетворять условию .

Поскольку частное , где – цифры частного и , то из (4-19) следует

. (4-20)

Из (4-20) следует

(4-21)

где промежуточный остаток , причем .

Из (4-21) получим

(4-22)

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

Так как индекс старшего значащего разряда частного не может превышать , примем

.

Тогда

(4-23)

. (4-24)

Выражение (4-23) можно представить в иных формах:

(4-25)

или (4-26)

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

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

      1. Деление двоичных чисел в прямом коде

Если делимое и/или делитель не являются целыми числами, то их предварительно приводят к целым. Выполняют деление модулей операндов и вычисляют модуль частного и остатка. Знак частного и остатка определяют по правилам, приведенным в разделе 4.5.1.

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

Разряды частного, начиная с до включительно, вычисляют по выражению (4-25) или (4-26), а очередные остатки по (4-24).

        1. Деление с восстановлением остатка

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

Основная идея способа деления с восстановлением остатка состоит в следующем. В аппаратуре исходные данные и промежуточные результаты хранятся в относительно дорогостоящих ячейках памяти (в регистрах), которые целесообразно экономить. При делении для нахождения цифры частного и очередного остатка в соответствии с (4-25) и (4-24) вычисляют разность делимого и сдвинутого делителя . Разность для экономии памяти записывают на место делимого , стирая последнее. По знаку разности судят о значении цифры частного (4-24).

Из (4-24) следует, что сохраненная разность является очередным остатком при условии, что ее знак (+) и . В этом случае для вычисления очередной цифры частного и остатка следует повторить операцию вычитания, сдвинув предварительно делитель на разряд вправо или остаток на разряд влево.

Если сохраненная разность имеет знак (–) и , то она не является остатком . Остаток . Но значение утеряно; на его месте записана разность . Для восстановления утерянного остатка достаточно к разности прибавить . После восстановления остатка деление можно продолжить.

Рассмотрим процедуру деления с восстановлением остатка на примере.

Пример 4-65. Пусть ; . Количество разрядов в делимом ; в делителе – . Индекс старших разрядов частного и делимого . Вычислим разряды частного от до .

Тогда ; ; начальное значение остатка

.

Чтобы при в выражении (4-25) вычислить разность , сместим Y на 4 разряда влево и тем самым совместим младший разряд со старшим разрядом в одной позиции. Кроме того, расширим код слева на позиции и запишем в них нули, как показано на рис.4-7.

Т ак как младшие 4 разряда сдвинутого равны нулю, то они могут не участвовать в операции вычитания и поэтому на рис.4-7 заданы по умолчанию. Фактически выполняется вычитание делителя из старших разрядов расширенного делимого, т.е. из .

Знак разности , показан на рис.4-7 жирным шрифтом.

В соответствии с (4-25) инверсию знака разности записывают в старший разряд частного . Разряды разности записывают на место . Теперь на месте будет записан код 11001011. Но он, к сожалению, не является остатком .

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

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

Очередная разность отрицательная. Поэтому записывают и восстанавливают утерянный остаток .

Остаток сдвигают еще на один разряд влево и снова вычитают делитель. Теперь разность 0001 11.00 положительная и является остатком , а . Поэтому выполнять восстановление остатка не нужно.

Последующие действия выполняют по аналогии с предыдущими.

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

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

В примере рис.4-7 при вычислении разность положительная и равна 0010.0000 (повезло). Поэтому остаток 010, а целое частное 00101.

В примере рис.4-7 вычисление разрядов частного продолжено вплоть до разряда . Кроме того, приведены значения последующих разрядов, чтобы читатель мог самостоятельно, продолжив деление, сверить полученный им результат с правильным.

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

Читатель может поставить вопрос: зачем сдвигать делимое влево вместо сдвига делителя вправо? Чтобы сдвигать делитель вправо придется расширить его формат вправо на разрядов. Кроме того, вместо вычитания из разрядного числа разрядного, придется выполнять вычитание из разрядного числа разрядное число. Это очень существенно осложнит вычисления.

Недостатки способа деления с восстановлением остатка.

  1. В лучшем случае для вычисления одной цифры частного необходимо выполнить два шага (сдвинуть остаток и затем вычесть делитель). Если разность не является остатком необходимо выполнять еще один шаг – восстановить остаток. Это очень сильно замедляет процесс вычисления.

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