Информатика и вычислительная техника


Арифметические операции над двоичными числами


Рассматривая реализацию в ЭВМ различных арифметических операций, необходимо учитывать особенности их выполнения для различных форм представления чисел (с фиксированной или плавающей точкой).

Операция алгебраического сложения чисел, представленных в форме с фиксированной точкой, сводится, как уже отмечалось, к арифметическому суммированию с использованием дополнительного кода для отрицательных чисел. Знаковые разряды чисел участвуют в сложении так же, как и значащие. При этом слагаемые должны иметь одинаковое число значащих разрядов. Для выравнивания разрядности слагаемых можно дописать незначащие нули в старшие разряды меньшего по модулю числа.

Если в результате сложения получилась положительная сумма (0 в знаковом разряде), то она представлена в прямом коде. Если в знаковом разряде образовалась единица, то сумма отрицательна и представлена в дополнительном коде.

Пусть, например, требуется сложить целые числа х = - 610 = - 1102 и у = + 310 = + 0112. В соответствующих кодах эти числа представятся следующим образом: xпр = 1.110; xобр = 1.001; xдоп = 1.010; упр = 0.011.

При суммировании xдоп и упр

получен отрицательный результат, следовательно (х + у)доп = 1.101. Переведя этот результат в десятичную систему счисления (1.101)доп > (1.100)обр > (1.011)пр = - 011.1 = - 310, убеждаемся в правильности выполненной операции.

При сложении кодов может возникнуть так называемое переполнение разрядной сетки, при котором результат превышает предельно допустимое положительное или отрицательное значение. Признаком переполнения является наличие переноса в знаковый разряд суммы при отсутствии переноса из знакового разряда (положительное переполнение) или наличие переноса из знакового разряда суммы при отсутствии переноса в ее знаковый разряд (отрицательное переполнение). При положительном переполнении результат операции положительный, а при отрицательном - отрицательный.

Если же переносов из знакового разряда и в знаковый разряд суммы нет или есть оба эти переноса, то переполнения нет и при нуле в знаковом разряде сумма положительна и представлена в прямом коде, а при единице в знаковом разряде сумма отрицательна и представлена в дополнительном коде.




Начало  Назад  Вперед



Книжный магазин