Арифметические операции над двоичными числами в дополнительном коде
Основные правила сложения
- в каждом разряде, кроме младшего, суммируются три цифры.
- цифра выползающая за разрядную сетку отбрасывается
- изменение знака при сложении чисел одинакового знака вызывает
переполнение (общее правило переполнения: есть перенос в знаковый разряд, но нет переноса из знакового разряда или нет переноса в знаковый разряд, но есть перенос из знакового разряда).
- вычитание сводится к сложению с дополнительным кодом вычитаемого
Операции умножения и деления.
Основная особенность выполнения операций в двоичной системе счисления заключаются в следующем: сдвиг числа относительно разрядной сетки означает умножение или деление на 2 сводится к последовательности
операций (что, впрочем, справедливо и для 10-тичной системы).
Наиболее просто выполнять умножение как поразрядное действие: анализируются разряды множителя, начиная с младшего (или старшего).
Если разряд множителя = 1, то к частному произведению сдвинутому
вправо (или влево) прибавляется множимое.
Если разряд множителя = 0, то частное произведению просто сдвигается. Но это справедливо только для чисел в прямом коде.
Алгоритм Бута для умножения чисел в дополнительном коде.
1. При умножении чисел в дополнительном коде число разрядов удваивается.
2. Разрядность множимого удваивается за счёт знака.
3. Множитель и сумма частных произведений сдвигаются вправо.
4. Выдвигаемая цифра множителя заносится в дополнительный разряд, значение которого вначале нулевое.
5. Анализируется пара: младший разряд множителя и дополнительный разряд.
6. Если они одинаковые, то сдвиг множителя с суммы вправо на один разряд; если 01, то множимое складывается с суммой; если 10, то множимое вычитается из суммы; затем сдвиг вправо.
В настоящее время умножение выполняется посредством дерева сумматоров.
Деление может выполнятся путём умножения на обратную величину делителя.