Критерии выбора системы счисления в ЭВМ. Кодирование чисел для выполнения арифметических операций в ЭВМ. Машинные алгоритмы умножения чисел в ЭВМ. Двоично-десятичные коды, страница 2

1)  сравнить знаки слагаемых;

2)  сравнить слагаемые по модулю при неравенстве их знаков;

3)  выполнить соответствующую арифметическую операцию: сложение при равенстве знаков и вычитание из большего по модулю слагаемого меньшего при неравенстве их знаков;

4)  присвоить алгебраической сумме знак большего по модулю слагаемого.

Так как операция сложения значительно проще вычитания, то возникает вопрос: нельзя ли каким-либо образом вычитание заменить сложением? Оказывается, это возможно за счет несколько более сложного кодирования. Для этого и вводятся Дополнительный код и Обратный код.

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

Число А' называется дополнением к числу А если сумма

А+А' =      r в степени 0, если А - дробное.

r в степени n, если А - целое. где r - система счисления, n - разряд числа А.

Пример: Найти дополнение к десятичному числу А=254

Так как А - целое, то А+А'= r в степени n, где r=10, n=3

А' = 1000-А = 746

Как уже было замечено, дополнение позволяет заменить вычитание сложением. Это легко заметить:

А-В = А+(r в степени n - В) = А+В'-(r в степени n)

Поясним это на примере: А=357 В=164   А-В - ?

A = 357          A  = 357

В = 164          В' = 836

А-В =-193        А+В' =1193

Введем определение дополнительного кода числа.

Дополнение, перед которым стоит знак – дополнительный код числа.

В зависимости от того целое или дробное число, его представление в дополнительном коде осуществляется по следующим формулам:

А - дробное:

0.|A|         при А>=0

[A]доп =

r-|A|         при A<0

A - целое:

|A|         при А>=0

[A]доп =

(n+1)

r    -|A|    при А<0

Можно сформулировать следующее правило нахождения дополнительного кода:   Дополнительный код положительного числа совпадает с его прямым кодом.

Для получения дополнительного кода отрицательного числа следует в знаковый разряд записать цифру равную с/с-1, а во всех других разрядах цифры заменить на взаимно обратные, после чего к младшему разряду числа добавляется единица.

Аппаратно перевод числа в дополнительный код реализуется при помощи следующей схемы:

Число   11000

00111+

1

----01000

ПРИМЕР 3:

Представить в дополнительном коде двоичные дробные числа А1 = 0.110011 и

А2 = -0.110011

Ответ:  [А1]доп = 0.110011  [А2]доп = 1.001100+0.000001 = 1.001101

ПРИМЕР 4: Представить в обратном коде двоичные целые числа А1 = 110011 и

А2 = -110011, используя 8-разрядную сетку.

Ответ: [А1]доп = 00110011  [А2]доп = 11001101

Покажем на примере как с помощью доп. кода происходит вычитание:

А = 0.0101    В = -0.0010

[А]доп = 0.0101

[A]доп = 1.1110

10.0011

Нужно отметить что старшая единица не попадает в разрядную сетку и отбрасывается.

Покажем, как аппаратно реализуется сложение/вычитание чисел в дополнительных кодах: Числа A и B возьмем из предыдущего примера. Числа хранятся в регистрах в дополнительном коде.

[A]доп =0.0101

[B]доп =1.1110

0.0011

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

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

Таким образом, обратным кодом отрицательного числа будем называть число получаемое по следующему правилу:

в знаковом разряде проставляется цифра равная с/с-1, а во всех остальных разрядах цифры заменяются на взаимно обратные.