Схемы деления целых чисел со знаком (в дополнительном или обратном кодах)
При операциях деления со знаком в дополнительном или обратном кодах используются алгоритмы, подобные вышеописанным.
Особенностями алгоритма деления без восстановления отрицательных остатков для целых чисел в дополнительном коде являются:
· действия с делимым и частичными остатками (сложение или /вычитание) определяются соотношениями знаков делителя и делимого или частичных остатков:
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 (дополнительный код).
Результат деления:
частное – 1.011(2) = –5(10) ,
остаток – 1.110(2) =– 2(10).
Дата добавления: 2022-02-05; просмотров: 409;