Правило 10. Вычитание чисел.
Для того, чтобы вычисть числа в системе счисления с основанием q, необходимо записать одно под другим столбиком, чтобы разряды вычитаемого располагались под соответствующими разрядами уменьшаемого. Вычитание производиться поразрядно, начиная с младшего разряда. Рассмотрим вычитание в i-ом разряде. Введем обозначения:
a и b -цифры соответствующего уменьшаемого и вычитаемого i-го разряда,
p -признак единицы заема в i –ом разряде. Этот признак равен -1 (минус единица), если возникла необходимость в заеме единицы в i-1 разряде из i-ого разряда и признак pi равен 0 в противном случае.
Поставим в соответствии цифрам a и b равные по весу десятичные .числа a и b . Найдем значение выражения r =a - b + p . Возможны два случая:
1. r <0. В этом случае признак p =-1, т.е. возникает заем единицы в следующем разряде. Найдем сумму r + q. Полученной сумме поставим в соответствие цифру r системы счисления с основанием q.
2. r 0. В этом случае r необходимо поставить в соответствии цифру ri. Признак заема p = 0.
Полученная цифра r является цифрой i-го разряда разности. Аналогично производится вычитание в каждом разряде.
Правило 11. Вычитание чисел в двоичной системе счисления с иcпользованием дополнительного кода.
Пусть заданы два положительных десятичных числа x и y. Необходимо найти разность: x – y, используя дополнительный код числа. Выполним следующие действия:
1. Переведем десятичные числа x и y в двоичную систему счисления.
2. Определим количество значащих разрядов kx и ky в найденных двоичных числах.
3. Преобразуем выражение: x – y = x + (-y).
4. Найдем дополнительный код отрицательного числа (-y). Количество разрядов дополнительного кода h должно удовлетворять неравенству:
h >= max(kx +1, ky+1).
5. Найдем сумму чисел x и дополнительного кода числа (–y), используя обычные правила сложения двух двоичных чисел. Количество двоичных разрядов, необходимых для сложения в этом случае равно h. Старшие разряды двоичных чисел являются знаковыми. Знаковые разряды складываются как обычные двоичные разряды. Если при сложении возникает единица переноса из знакового разряда, то она отбрасывается. При этом результат не искажается.
6. Найдем разность в десятичной системе счисления. Знаковый разряд результата полученного в пункте 5 определяет форму представления числа. Возможны два случая.
6.1. Если знаковый разряд равен нулю, то разность исходных чисел неотрицательное число и записана в прямом коде. В этом случае воспользуемся правилом № 1 для перевода результата в десятичную систему счисления.
6.2. Если знаковый разряд равен единице, то разность исходных чисел - отрицательное число и записана в дополнительном коде. В этом случае воспользуемся правилом 7 для восстановления изображения числа в десятичной системе счисления.