1.1. Сложение положительных двоичных чиселвыполняется в обычном двоичном коде, называемым прямым кодом. Один или два старших разряда используются для знака числа. Рассмотрим на примере восьми битного числа с двумя знаковыми разрядами. Использование для представления знака числа двух бит предоставляет интересную возможность контролировать переполнение при выполнении арифметических операций. Рассмотрим несколько примеров.
Просуммируем числа A=12 и B=5. Для выполнения этой операции в АЛУ надо со входов мультиплексоров передать числа A и B без изменения в сумматор, на выходе S, которого получим результат.
В результате суммирования получается правильный результат. Это можно проконтролировать по старшему разряду знака (флагу переноса C), который совпадает со вторым знаковым разрядом (знаком результата).
Просуммируем числа 100 и 31
В этом примере видно, что в результате суммирования произошло переполнение восьмибитовой переменной, т.к. в результате операции над положительными числами получился отрицательный результат. Однако если рассмотреть флаг переноса, то он не совпадает со знаком результата. Эта ситуации является признаком переполнения результата и легко обнаруживается при помощи операции "исключающее ИЛИ" над старшим битом результата и флагом переноса C. Большинство процессоров осуществляют эту операцию аппаратно и помещают результат во флаг переполнения OV.
1.2. Сложение отрицательных двоичных чисел выполняетсяв дополнительном коде. В нем операции с отрицательными числами выполняются аналогично операциям с положительными числами.
Просуммируем два отрицательных числа -12 и -5. Чтобы представить отрицательное число в дополнительном коде, надо представить его в прямом коде с нулевыми знаковыми разрядами как в предыдущем примере. После этого надо инвертировать все разряды кода и прибавить единицу младшего разряда. Получим значения A и B, приведенные ниже и просуммируем их.
В примере флаг переноса C тоже совпадает со знаком результата, то есть переполнения не произошло и в этом случае.
1.3. Сложение положительного и отрицательного двоичных чисел ничем не отличается от предыдущих операций. Просуммируем положительное и отрицательное число -12 и +5.
В этом примере при суммировании положительного и отрицательного числа автоматически получается правильный знак результата. В данном случае знак результата отрицательный. Флаг переноса совпадает со знаком результата, поэтому переполнения не было.
2. Сумматоры
Сумматоры выполняют арифметическую операцию сложения двух чисел. Они имеют как самостоятельное значение, так и являются составной частью арифметическо-логического устройства (АЛУ) микропроцессора. При организации различных вычислительных процессов суммированию отводится главная роль, оно является основной операцией. Например, вычитание - это суммирование с использованием дополнительного либо обратного кода, умножение сводится к сдвигу и сложению (суммированию) двоичных чисел. Следует отметить, что сумматоры являются логическими устройствами, функционируют по законам алгебры логики, но выполняют операцию арифметического, а не логического сложения.
Рис. 1. Обозначение сумматора на функциональных схемах
По выполняемым функциям различают: полусумматоры, одноразрядные сумматоры, многоразрядные сумматоры.
На основе сумматоров строятся арифметико-логические устройства (АЛУ).