Словесное описание алгоритма
Пусть А — делимое, В — делитель и С — частное, при этом A = 0, a1a2…an; B = 0, b1b2…bn; C = 0, c1c2…cn.
На первом шаге делитель вычитается из делимого, а на последующих шагах, делитель, сдвинутый на i-разрядов вправо, вычитается из остатка, полученном на предыдущем i-1 шаге, т. е.:
Ai = Ai-1 — B2-i (1).
Если Ai 0, то в частное записывается единица, т. е. Сi = 1 и находится следующий остаток по формуле (1).
Если Ai < 0, то Сi = 0 и происходит восстановление остатка:
Ai-1 = Ai + B2-i
Частное получается следующим образом:
Ai+1 = Ai-1 — B2— (i+1)
Действия повторяются до тех пор пока не будут получены все цифры частного.
При делении знаковая и цифровая части частного получаются раздельно. Знак частного образуется по формуле:
SgC = SgA SgB.
Для образования цифр частного воспользуемся следующим соответствием, в котором приведены логические действия над остатками и делителем:
|
Знак делимого А | | | ; | ; |
Знак делителя В | | ; | | ; |
Действие в сумматоре. |
Если знаки операндов одинаковые то остаток определяется путем вычитания, а если разные, то путем сложения. Для получения цифры частного необходимо проанализировать знак остатка. Обычно знак остатка считается положительным, если его знак совпадает со знаком делимого, и отрицательным, если знаки разные.
При делении чисел в естественной форме на первом шаге может произойти переполнение разрядной сетки частного, т. е. когда: |A| > |B|.
Чтобы этого не произошло, при делении в естественной форме должно выполнятся условие: |A| < |B|. Поэтому первым действием пр8и делении в естественной форме является предварительный сдвиг сумматора и регистра частного на один разряд влево.