Cтраница 2
Положительные и отрицательные числа в памяти машины хранятся в прямом коде. В этом же коде выполняется и сложение положительных чисел. Отрицательные числа могут представляться еще в двух кодах-обратном и дополнительном. [16]
Результат сложения двух положительных или двух отрицательных чисел по абсолютной величине может превысить допустимый диапазон, что приведет к переполнению разрядной сетки, а следовательно, к искажению результата, поэтому они недопустимы. Одним из признаков переполнения разрядной сетки машины может служить появление в разряде знаков результата единицы при сложении положительных чисел или цифры нуль при сложении отрицательных чисел. Такой способ выявления переполнения неудобен тем, что требует запоминания кодов знаков слагаемых. [17]
В общем случае необходимо производить сложение и вычитание как положительных, так и отрицательных чисел. Таблица истинности ( табл. 1.3), описывающая закон функционирования одноразрядного двоичного сумматора, составляется на основании сформулированного выше правила сложения положительных чисел. [18]
Как уже указывалось выше, при выполнении операции сложения чисел с одинаковыми знаками может произойти переполнение разрядной сетки, когда для представления результата требуется большее количество разрядов, чем для представления чисел. Поскольку знаковые разряды складываются с учетом переноса из старшего разряда, то это явление может привести к неправильному результату. Независимо от кода для представления отрицательных чисел ( обратный или дополнительный) переполнение разрядной сетки происходит всегда, если только при сложении положительных чисел возникает перенос в знаковый разряд, а при сложении отрицательных чисел такой перенос отсутствует. [19]
В сложении участвуют все 32 бита каждого операнда. Если переносы из знакового бита и старшего бита целой части числа одновременно либо отсутствуют, либо присутствуют, то это говорит о том, что сложение выполнено нормально. Если перенос делается только из какого-либо одного из указанных битов, возникает переполнение. При переполнении полученный знаковый бит суммы остается без изменения. Поэтому при переполнении, возникшем в результате сложения положительных чисел, получается сумма с отрицательным знаком, а при переполнении, возникшем в результате сложения отрицательных чисел, - с положительным знаком. [20]
В сложении участвуют все 32 бита каждого операнда. Если переносы из знакового бита и старшего бита целой части числа одновременно либо отсутствуют, либо присутствуют, то это говорит о том, что сложение выполнено нормально. Если перенос делается только из какого-либо одного из указанных битов, возникает переполнение. При переполнении полученный знаковый бит суммы остается без изменения. Поэтому при переполнении, возникшем в результате сложения положительных чисел, получается сумма с отрицательным знаком, а при переполнении, возникшем в результате сложения отрицательных чисел - с положительным знаком. Если бит маски переполнения с фиксированной точкой равен 1, переполнение вызывает программное прерывание. [21]
Алгебраическое сложение с использованием дополнительно го кода. Предусматривать в цифровом устройстве дополнительно такую последовательность действий не обязательно. Искомый результат может быть получен и с использованием последовательности действий с передачей переносов в старшие разряды, которая используется при сложении положительных чисел. Для этого достаточно отрицательное число 1 376 предварительно преобразовать в так называемый дополнительный код следующим образом: во всех разрядах, кроме знакового, запишем дополнение до 9 к цифрам этих разрядов и затем прибавим единицу в младший разряд. [22]