Особенности выполнения операций в обратных кодах

Выполнение арифметических операций в дополнительных кодах

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

 

Правила выполнения арифметических операций в двоичной системе счисления аналогичны правилам операций в десятичной системе счисления. Например:

Сложение Вычитание
+
Результат Результат
  Умножение   х 101   Деление –   101101/101 101 1001 0 101 –101
Результат (произведение) Результат (частное)

 

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

Сложениепроизводится по обычным правилам сложения двоичных чисел: едини­ца переноса, возникающая из старшего знакового разряда, просто отбрасывается.

Примеры сложения:

X =-0,1101; Y =0,1001. Результат сложения: 11,0011+00,1001 = 11,1100 (или -1100);

Х =0,1101; Y =0,1001. Результат сложения: 00,1101 + 00,1001 = 01,0110 (пере­полнение, после сдвига вправо получим 00,10110, или +10110);

X =0,1101; Y =-0,1001. Результат сложения: 00,1101+11,0111= 100,0100 (или 00,0100);

Х =-0,1101; Y =-0,1001. Результат сложения: 11,0011+11,0111= 10,1010 (пе­реполнение, после сдвига вправо получим 11,01010, или -10110).

Умножениечисел в дополнительных кодах производится по обычным правилам умножения двоичных чисел. Единственной особенностью является то, что если сомножитель является отрицательным (знаковые разряды равны 11), то перед на­чалом умножения следует приписать к нему слева столько единиц, сколько значащих разрядов у другого сомножителя справа от запятой. Результат (произведе­ние) всегда получаем в дополнительном коде.

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

Примеры операции умножения:

Х = 0,111; Y= 0,101; X ·Y =0,100011 Х =0,111; Y=- 0,011; X ·Y = -0,011101

00,111 00,111

х 00,101 , х 11111,011

00111 00111

00000 00111

00111 00000

00000 00111

00000 00111

00,100011 00111

00111 001011,011101→11,011101

Х=-0,001; Y=0,101; X ·Y=-0,011101; Х= -0,001;·Y=-0,011; X ·Y =0,100011

11111,001 11111,001

х 00,101х 11111,011

11111001 11111001

00000000 11111001

11111001 00000000

00000000 11111001

00000000 11111001

001011,011101 → 11,01101 11111001

11111001

1111010000,100011→00,100011

 

 

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