При операциях деления со знаком в дополнительном или обратном кодах используются алгоритмы, подобные вышеописанным.
Особенностями алгоритма деления без восстановления отрицательных остатков для целых чисел в дополнительном коде являются:
· действия с делимым и частичными остатками (сложение или /вычитание) определяются соотношениями знаков делителя и делимого или частичных остатков:
1. при совпадении знаков делителя и делимого или частичных остатков производится вычитание делителя из делимого или частичных остатков,
2. при несовпадении знаков делителя и делимого или частичных остатков производится сложение делителя с делимым или частичными остатками.
· при совпадении знаков частичного остатка и делителя фиксируется единичный разрядный знак частного, при несовпадении – фиксируется нулевой разрядный знак частного.
· после получения результата, в зависимости от соотношения знаков делимого и делителя и наличия остатка, производится корректировка частного путем увеличения его на единицу:
1. при положительном делимом и отрицательном делителе,
2. при отрицательном делимом, положительном делителе и при ненулевом остатке,
3. при отрицательных делимом и делителе и при нулевом остатке.
Пример 1. Деление целых чисел со знаками без восстановления отрицательных остатков (делимое – положительное, делитель– отрицательный)
Делимое – А = 27(10) = 0.0100011(2),
Делитель – В = –5(10) , = 1.1011(2) (в дополнительном коде)
Цифры дополнительного разряда регистров делимого, делителя и все цифры частного выделены жирным шрифтом.
№
цикла
Делимое/
частичный
остаток
Делитель
Частное
Комментарии
0.0011011
+1.1011 .
1.1110011
1.1011
1.
Исходное состояние
Знаки не совпадают – сложение
Знаки совпадают – цифра (знак частного) = 1
1.110011
+0.0101 .
0.000111
1.1011
1.0
Сдвиг делимого
Знаки совпадают – вычитание
Знаки не совпадают – цифра частного 0
0.00111
+1.1011 .
1.11101
1.1011
1.01
Сдвиг делимого
Знаки не совпадают – сложение
Знаки совпадают – цифра частного = 1
1.1101
+0.0101
0.0010
1.1011
1.010
Сдвиг делимого
Знаки совпадают – вычитание
Знаки не совпадают – цифра частного 0
0.0010
1.011
А>0, B<0, Коррекция частного(+1)
Результат деления 011011 (27(10)) на 1.011 (–5(10)),
Частное – 1.011 (–5(10)), остаток – 0.010 (2(10))
Результат деления
частное – 1.011(2) = –5(10),
остаток – 0.010 (2)= 2(10).
Пример 2. Деление целых чисел со знаками без восстановления отрицательных остатков. (делимое – отрицательное, делитель – положительный).
Делимое – А = – 27(10) = 1.100101(2) (в дополнительном коде).
Делитель – В = 5(10)= 0.101(2).
Цифры дополнительного разряда регистров делимого, делителя и все цифры частного выделены жирным шрифтом
№
цикла
Делимое/
частный остаток
Делитель
Частное
Комментарии
1.1100101
+0.0101 .
0.0001101
0.0101
1.
Исходное состояние
Знаки не совпадают – сложение
Знаки совпадают – цифра (знак частного) = 1
0.001101
+1.1011 .
1.111001
0.0101
1.0
Сдвиг делимого
Знаки совпадают – вычитание
Знаки не совпадают – цифра частного 0
1.11001
+0.0101 .
0.00011
0.0101
1.01
Сдвиг делимого
Знаки не совпадают – сложение
Знаки совпадают – цифра частного = 1
0.0011
+1.1011
1.1110
0.0101
1.010
Сдвиг делимого
Знаки совпадают – вычитание
Знаки не совпадают – цифра частного 0
1.1110
0.0101
1.011
А>0, B<0, Коррекция частного(+1)
Результат деления 1.100101 на 0.101, частное – 1.011, остаток – 1.110 (дополнительный код).