Выполнение арифметических операций в АЛУ для чисел с фиксированной запятой. Часть I. Базарова С. Б-М - 29 стр.

UptoLike

57
делитель | Y | относительно делимого | X | на n-1 разрядов
влево.
Если результат вычитания | X | - | Y’ | (это вычитание
называется пробным) больше 0, то | Z | 2
n-1
и деление
невозможно, если меньше 0, то можно выполнить деление.
Иными словами можно сказать, что если результат
пробного вычитания больше 0, то при данном делимом
делитель слишком мал и частное получается с
переполнением.
Рассмотрим пример деления. Пусть делимое X = -38
и делитель Y = + 7. Представим делимое и делитель в прямом
коде (старший разрядзнаковый, который в
отрицательных числах равен 1, а в положительных равен
0).
X
пр
= 10100110 и делитель Y
пр
= 0111. Тогда модуль
делимого | X | = 00100110 и модуль делителя | Y | = 0111 (для
получения модулей делимого и делителя в их старшие
разряды заносятся нули). Частное Z должно быть
представлено прямым кодом с 4 двоичными разрядами,
старший из которых отображает знак и в модуле частного
| Z | должен быть равен 0. Выполним деление | X | на | Y |
уголком:
58
В соответствии с правилами деления очередной
цифрой частного является 1, если после вычитания из
остатка делителя получается положительный результат,
и 0, если результат отрицателен. В последнем случае
восстанавливается остаток, который был до вычитания.
Затем делитель смещается на разряд вправо и процедура
повторяется. В рассматриваемом примере при
отрицательном результате пробного вычитания согласно
общему правилу фиксируется цифра частного Z
0
= 0 для
единообразия процедур деления. На её место после
завершения деления модулей заносится знак результата.
Так как знаки делимого X и делителя Y в примере
различны, то знак частного Z отрицателен, поэтому от | Z | =
0101 переходим к прямому коду Z
пр
= 1101.
Недостатком такого способа является двойная длина
сумматора и его регистров в АЛУ. Поэтому данный способ
не нашёл широкого распространения.
00100110 0111
0111 0101
(<0)
001001 т.к. результат отрицателен, то
0111 восстанавливаем остаток
00101 (>0)
0111
(<0)
001010 восстанавливаем остаток
0111
0011 (>0)- остаток от деления
пробное
вычитание
делитель | Y | относительно делимого | X | на n-1 разрядов
                                                                                     00100110          0111
                                                                         пробное
влево.                                                                   вычитание
                                                                                      0111             0101
                                                                                      (<0)
         Если результат вычитания | X | - | Y’ | (это вычитание                      001001    – т.к. результат отрицателен, то
называется пробным) больше 0, то | Z | ≥ 2n-1 и деление                                0111       восстанавливаем остаток
                                                                                       00101 (>0)
невозможно, если меньше 0, то можно выполнить деление.                                  0111
                                                                                       (<0)
Иными словами можно сказать, что если результат                                        001010 – восстанавливаем остаток
                                                                                         0111
пробного вычитания больше 0, то при данном делимом
                                                                                         0011 (>0)- остаток от деления
делитель     слишком     мал     и     частное   получается      с
переполнением.                                                             В соответствии с правилами деления очередной
         Рассмотрим пример деления. Пусть делимое X = -38            цифрой частного является 1, если после вычитания из
и делитель Y = + 7. Представим делимое и делитель в прямом           остатка делителя получается положительный результат,
коде     (старший     разряд     –      знаковый,    который     в   и 0, если результат отрицателен. В последнем случае
отрицательных числах равен 1, а в положительных равен                восстанавливается остаток, который был до вычитания.
0).                                                                  Затем делитель смещается на разряд вправо и процедура
         Xпр = 10100110 и делитель Yпр = 0111. Тогда модуль          повторяется.     В     рассматриваемом         примере       при
делимого | X | = 00100110 и модуль делителя | Y | = 0111 (для        отрицательном результате пробного вычитания согласно
получения модулей делимого и делителя в их старшие                   общему правилу фиксируется цифра частного Z0 = 0 для
разряды     заносятся   нули).        Частное    Z должно     быть   единообразия процедур деления. На её место после
представлено прямым кодом с 4 двоичными разрядами,                   завершения деления модулей заносится знак результата.
старший из которых отображает знак и в модуле частного                     Так как знаки делимого X и делителя Y в примере
| Z | должен быть равен 0. Выполним деление | X | на | Y |           различны, то знак частного Z отрицателен, поэтому от | Z | =
уголком:                                                             0101 переходим к прямому коду Zпр = 1101.
                                                                           Недостатком такого способа является двойная длина
                                                                     сумматора и его регистров в АЛУ. Поэтому данный способ
                                                                     не нашёл широкого распространения.

                                 57                                                                58