Знаковые дополнительные двоичные коды 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Знаковые дополнительные двоичные коды



От перечисленных недостатков свободны дополнительные коды. Они позволяют суммировать положительные и отрицательные числа, не анализируя знаковый разряд, и при этом получать правильный результат. Все это становится возможным благодаря тому, что дополнительные числа являются естественным кольцом чисел, а не искусственным образованием, как прямые и обратные коды. Кроме того, немаловажным является то обстоятельство, что вычислять дополнение в двоичном коде чрезвычайно легко. Для этого достаточно к обратному коду добавить единицу. Формат 8-разрядного дополнительного знакового двоичного кода приведен на рис. 18.7. На рисунке приведено шесть различных чисел, записанных в этом коде.

Рис. 18.7. Формат 8-разрядного дополнительного знакового двоичного кода

Числа, которые можно представлять 8-разрядным дополнительным двоичным кодом находятся в диапазоне от –128 до +127. Для 16-разрядного кода этот диапазон будет от –32768 до +32767. В 8-разрядном процессоре для хранения 16-разрядного числа используется две ячейки памяти, расположенные в соседних адресах.

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

Использование для представления знака числа двух битов предоставляет интересную возможность контролировать возникновение переполнения при выполнении арифметических операций. В качестве второго знакового бита обычно используется флаг переноса C. Можно конечно использовать и большее количество знаковых битов, но это никаких дополнительных преимуществ не дает. Рассмотрим несколько примеров работы с дополнительными двоичными кодами.

10. Просуммируем числа +12 и +5. Суммирование этих чисел в двоичном и десятичном представлении приведено на рис. 18.8.

Рис. 18.8. Суммирование чисел +12 и +5

В этом примере видно, что в результате суммирования получается правильный результат. Это можно проконтролировать по флагу переноса C, который совпадает со знаком результата (эффект распространения знака действует).

11. Просуммируем два отрицательных числа –12 и –5. Суммирование этих чисел в двоичном и десятичном представлении приведено на рис. 18.9.

Рис. 18.9. Суммирование чисел –12 и –5

В этом примере флаг переноса C тоже совпадает со знаком результата, то есть переполнения не произошло и в этом случае

12. Просуммируем положительное и отрицательное число –12 и +5. Суммирование этих чисел в двоичном и десятичном представлении приведено на рис. 18.10.

Рис. 18.10. Суммирование чисел –12 и +5

В этом примере при суммировании положительного и отрицательного числа автоматически получается правильный знак результата. В данном случае знак результата отрицательный. Флаг переноса совпадает со знаком результата, поэтому переполнения не было (мы можем убедиться в этом непосредственными вычислениями на бумаге или при помощи калькулятора).

13. Просуммируем положительное и отрицательное число +12 и –5. Суммирование этих чисел в двоичном и десятичном представлении приведено на рис. 18.11.

Рис. 18.11. Суммирование чисел +12 и –5

В данном примере знак результата положительный. Флаг переноса совпадает со знаком результата, поэтому переполнения не было и в этом случае.

14. Просуммируем числа 100 и 31. Суммирование этих чисел в двоичном и десятичном представлении приведено на рис. 18.12.

Рис. 18.12. Суммирование чисел +100 и +31

В этом примере видно, что в результате суммирования произошло переполнение 8‑битовой переменной, т.к. в результате операции над положительными числами получился отрицательный результат. Если рассмотреть флаг переноса C, то он не совпадает со знаком результата. Эта ситуации является признаком переполнения результата и легко обнаруживается при помощи операции “исключающее ИЛИ” над старшим битом результата и флагом переноса C. Большинство процессоров осуществляют эту операцию аппаратно и помещают результат во флаг переполнения OV.

15. Просуммируем числа –100 и –31. Суммирование этих чисел в двоичном и десятичном представлении приведено на рис. 18.13.

Рис. 18.13. Суммирование чисел –100 и –31

В этом примере при выполнении операции над отрицательными числами в результате суммирования произошло переполнение 8-битовой переменной, т.к. получился положительный результат. И в этом случае если рассмотреть флаг переноса C, то он не совпадает со знаком результата. Отличие от предыдущего случая только в комбинации этих битов. В примере 5 говорят о переполнении результата (комбинация 01), а в примере 6 — об антипереполнении результата (комбинация 10).



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 306; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.219.236.199 (0.005 с.)