Деление двоичных чисел производится так же, как и деление десятичных чисел. Однако деление двоичных чисел осуществляется проще, так как использование только двух цифр (0 и 1) исключает в каждом цикле деления необходимость определения числа делителей, содержащихся в текущей части делимого (остатке). Для определения очередной цифры частного достаточно только сравнить текущую часть делимого с делителем.
Пусть требуется разделить однобайтное число без знака Х= 11010011 на однобайтное число без знака У=00001011. Вручную деление осуществляется следующим образом:
11010011 | 1011
1011 10011
10001
1011
1101
1011
Выделяется часть делимого, начиная со старшего разряда таким образом, чтобы она была не меньше делителя, и из нее вычитался делитель, а в частное записывается 1. К остатку, полученному при вычитании, сносится следующая цифра делимого и производится сравнение полученного таким образом остатка с делителем. Если остаток не меньше делителя, то в следующий более младший разряд частного записывается 1. Если остаток меньше делителя - записывается 0. Затем к остатку добавляется следующая цифра делителя и снова производится сравнение остатка с делителем для определения следующей цифры частного. Аналогично производятся операции до тех пор, пока не используются все цифры делимого. При делении заданных чисел получается частное Z=10011 и остаток f=10.
|
|
Из приведенного примера видно, что при ручном делении часть операций фиксируется на бумаге, то есть выполняется как бы явно (вычитание из текущего остатка делителя, если остаток не меньше делителя), а часть операций выполняется в уме, то есть как бы неявно (выделение текущего остатка с делителем).
При организации автоматического процесса деления все операции должны выполняться явно. Процесс деления тех же чисел с явным выполнением всех операций приведен в примере.
Здесь после образования каждого текущего остатка, полученного добавлением очередной цифры делимого к остатку, производится вычитание из текущего остатка делителя. Если результат вычитания не меньше 0, то в очередной разряд записывается 1. Если результат вычитания - меньше 0, то в очередной разряд частного записывается 0 и производится восстановление остатка путем прибавления к отрицательному остатку делителя. Затем к остатку добавляется очередная цифра делимого, и операции определения очередных цифр частного повторяются аналогично.
_ 11010011 | 1011.
1011 00010011
1010 0
1011
11
1011
1000 0
1011
110
1011
101 0
1011
1101
1011
100 1
1011
111 0
1011
1000
1011
11 0
1011
10001
1011
1101 1
1011
10 1