Особенности выполнения операций в обратных кодах
Выполнение арифметических операций в дополнительных кодах
Арифметические операции в двоичной системе счисления
Правила выполнения арифметических операций в двоичной системе счисления аналогичны правилам операций в десятичной системе счисления. Например:
Сложение | Вычитание | ||
+ | – | ||
Результат | Результат | ||
Умножение | х 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
Обратные коды следует складывать как обычные двоичные числа, поступая со знаковыми разрядами, как с обычными разрядами, а если возникает единица переноса из знакового разряда, ее следует прибавить к младшему разряду суммы кодов. Последнее обстоятельство (возможное добавление единицы в младший разряд) увеличивает время выполнения операций в обратных кодах, поэтому в компьютере чаще используются дополнительные коды.