Алгоритм деления чисел в прямом коде без восстановления остатка

 

Алгоритм деления чисел в прямом коде без восстановления остатка сводится к выполнению следующих действий:

1. Вычесть из делимого X делитель Y. Если результат , то старшая цифра частного, относящаяся к разряду целых, равна 1; если же , то . Полученная разность является первым остатком.

2. Удвоить остаток.

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

4. Повторить пункты 2 и 3 n раз.

При реализации данного метода может оказаться, что . Это означает переполнение разрядной сетки или нарушение нормализации (для ЭВМ с плавающей запятой). Если делитель был нормализован, то деление можно продолжить, так как результат деления будет верным, но находящимся в пределах . Если же делитель ненормализован, то деление должно быть прекращено, так как возможна потеря старших разрядов остатка, вследствие чего результат будет ошибочным. Далее предполагается, что Z < 1. Пункт 2 данного метода можно заменить пунктом «Уменьшить в два раза делитель Y». Наличие двух интерпретаций второго пункта дает два основных варианта построения блоков деления (БД). В БД, построенном по первому варианту, осуществляется сдвиг влево остатка при неподвижном делителе. В БД, построенном по второму варианту, остаток неподвижен, а взаимный сдвиг остатка и делителя осуществляется за счет сдвига делителя вправо. Как в первом, так и во втором случае БД должен содержать регистры RGX, RGY, RGZ и сумматор SM. Поскольку в процессе деления производится вычитание делителя Y из делимого X, то RGX и RGY должны быть соединены с сумматором SM, а выходы SM должны быть подключены ко входам RGX. Для формирования сигнала конца операции END необходим счетчик сдвигов CT.