Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лк4.Юникод. Кодирование целых чисел.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
244.59 Кб
Скачать

Сложение и вычитание чисел со знаком в обратном коде

Сложение в обратном коде происходит следующим образом: по обычному алгоритму складываются все разряды, включая знаковый. Результат такого сложения для k-разрядных наборов имеет длину k+1 (самый левый разряд результата равен единице, если был перенос при сложении старших разрядов операндов, иначе - нулю). Значение левого k +1 -го разряда добавляется к младшему разряду результата. Получаем k-разрядный набор, который и будет суммой двух чисел в обратном коде.

Пример (k=3): +310+(-110) = 0112+ 1102= 1 0012 => 0012+1 = 0102 = +210. Вычитание чисел в обратном коде x—y сводится к сложению x+ (—y).

Сложение и вычитание чисел со знаком в дополнительном коде

В дополнительном коде сложение происходит так: по обычному алгоритму складываются все разряды, включая знаковый; единица переноса в k+1-й разряд отбрасывается (т.е. сложение по модулю 2k ).

Пример (k=3): +310+(-110)= 0112+ 1112= 10102 => 0102 = +210.

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

Пример(k=3): 1-3=0012-0112 => 10012-0112 =1102 = -210.

Если x и y — числовые значения дополнительного кода знаковых чисел, то числовые значения дополнительных кодов суммы и разности определяются по следующим формулам:

Умножение и деление

Во многих компьютерах умножение производится как последовательность сложений и сдвигов. Для этого в АЛУ имеется регистр, называемый накапливающим сумматором, который до начала выполнения операции содержит число ноль. В процессе выполнения операции в нем поочередно размещаются множимое и результаты промежуточных сложений, а по завершении операции — окончательный результат. Другой регистр АЛУ, участвующий в выполнении этой операции, вначале содержит множитель. Затем по мере выполнения сложений содержащееся в нем число уменьшается, пока не достигнет нулевого значения.

Деление для компьютера является трудной операцией. Обычно оно реализуется путем многократного прибавления к делимому дополнительного кода делителя.

Ошибки при выполнении арифметических операций

При выполнении арифметических операций могут возникать ситуации, когда старшие разряды результата операции не помещаются в отведенной для него области памяти. Ниже приводятся примеры ошибочных вычислений (k =3).

Сложение знаковых чисел в обратном коде:

10 + (-210) = 1002 + 1012 = 10012 => 0012 +1 = 0102 = +210 Вычитание знаковых чисел в обратном коде:

+210 - (-310)= 0102 -1012 => 10102 -1012 = 1012 = -310.

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

Страница 7 из 7