Модифицированные обратный и дополнительный коды.
Ранее говорилось, что из седьмого бита, может происходить перенос единицы в знаковый разряд. Это приводит к неправильному результату.
Для обнаружения такого случая вводятся модифицированные коды. Для них к байту добавляют еще один бит для знака.
В модифицированном обратном и модифицированном дополнительном кодах под знак числа отводится не один, а два бита:
· "00" соответствует знаку "+";
· "11" - знаку "-".
Любая другая комбинация ("01" или "10"), получившаяся в знаковых разрядах служит признаком переполнения разрядной сетки.
Сложение чисел в модифицированных кодах ничем не отличается от сложения в обычных обратном и дополнительном кодах.
Рассмотрим сложение чисел в модифицированных кодах (Табл.2.27 - Табл.2.31) , используя данные предыдущих примеров.
Пример.
A = +1010101
B = +1011101
A + B = 1010101 + 1011101
Таблица 2.27. Пример сложения положительных чисел в модифицированных кодах с переполнением
Знак | Значение кода | Примечание | ||||||||
А | ||||||||||
+ | В | |||||||||
= | Переполнение |
Пример.
A = -1010101;
B = +1011101
Таблица 2.28. Пример сложения чисел в модифицированных кодах в обратном коде, с положительной суммой.
Знак | Значение кода | Примечание | ||||||||
Обратный код для A | ||||||||||
+ | Обратный код для B | |||||||||
В знаковом бите появилась единица переноса | ||||||||||
1+1 | Единица переноса в знаковом бите прибавлена к значению младшего бита. | |||||||||
= | A + B = 1000 – положительная сумма |
Пример.
A = +1010101;
B = -1011101
Таблица 2.29. Пример сложения чисел в модифицированных кодах в обратном коде, с отрицательной суммой
Знак | Значение кода | Примечание | ||||||||
Обратный код для A | ||||||||||
+ | Обратный код для B | |||||||||
Отрицательное число. Переводим в прямой код. | ||||||||||
= | A + B = -1000 – отрицательная сумма |
Пример.
A = -1010101;
B = +1011101
Таблица 2.30. Пример сложения чисел в модифицированных кодах в дополнительном коде, с положительной суммой.
Знак | Значение кода | Примечание | ||||||||
Дополнительный код для A | ||||||||||
+ | Дополнительный код для B | |||||||||
В знаковом бите появилась единица переноса. Она отбрасывается | ||||||||||
= | A + B = 1000 – положительная сумма |
Пример.
A = +1010101;
B = -1011101
Таблица 2.31. Пример сложения чисел в модифицированных кодах в дополнительном коде, с отрицательной суммой
Знак | Значение кода | Примечание | ||||||||
Дополнительный код для A | ||||||||||
+ | Дополнительный код для B | |||||||||
Отрицательное число. Переводим в прямой код. | ||||||||||
Единицу прибавляем к значению младшего бита. | ||||||||||
= | A + B = -1000 – отрицательная сумма |
Дата добавления: 2016-12-16; просмотров: 901;