Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Пример 1. ¾¾¾¾ ¾¾¾¾ ¾¾¾¾
10 c/c 16 c/c 2 c/c 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 - 2 8 9 3 - A 5 4 C - 1 0 1 0 ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ 8 1 0 7 5 A B 4 0 1 1 0
Существует более простое правило формирования дополнительного кода отрицательного числа: чтобы получить такой код, необходимо каждую цифру исходного отрицательного числа заменить ее дополнением до максимальной цифры в данной системе счисления, а затем добавить единицу к младшему разряду образовавшегося числа. Для 10 c/c максимальная цифра - это 9, для 16 c/c - F, для 2 c/c - 1. Отметим, что для 2 c/c первый этап указанного преобразования сводится к инвертированию числа, т.е. замене нулей на единицы, а единиц - на нули. Для числа -3104 в формате short int имеем F3E0. Для числа -58 = -003A получим FFC6.
Дополнительный код позволяет заменить операцию вычитания операцией сложения с дополнительным кодом отрицательного числа.
Пример 2. Пусть нам требуется выполнить в 10 c/c операцию
6 5 8 6 1 - 4 8 2 7 3 ¾ ¾ ¾ ¾ ¾ 1 7 5 8 8
Вместо вычитания числа 48273 выполним сложение с его дополнительным кодом (51727):
6 5 8 6 1 + 5 1 7 2 7 ¾ ¾ ¾ ¾ ¾ | 1| 1 7 5 8 8
Обведенная единица переноса выходит за пределы разрядной сетки и теряется. Следовательно, в обоих случаях мы получили одинаковые результаты. Использование дополнительного кода позволяет отказаться от установки в процессоре блока вычитания, что упрощает его конструкцию.
Максимальное значение числа формата short int: = 0111 1111 1111 1111 = 1000 0000 0000 0000 - 1 = - 1 = 32767 Минимальное значение определяется кодом 1000 0000 0000 0000, которому соответствует число -32768.
Рассмотрим формирование отрицательного минимума для формата short int. 8000 = 1000 0000 0000 00002 1111 1111 1111 1111 - доп.код числа -1 + 1000 0000 0000 0001 - доп.код числа -111 1111 1111 1111 = - ( - 1) ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ 1 1000 0000 0000 0000 Единица переноса из старших складываемых разрядов отбрасывается. Результат: 8000 = - ( - 1) - 1 = - = - 32768.
При анализе содержимого полей памяти ПК нередко возникает обратная задача: по дополнительному коду определить прямой код отрицательного числа. Здесь можно выполнить действия, обратные по отношению к описанным выше: вычесть единицу из младшего разряда, а затем заменить каждую цифру ее дополнением до максимальной цифры данной системы счисления. Однако проще воспользоваться следующим правилом: дополнительный код дополнительного кода есть прямой код числа. В этом случае исчезает необходимость выполнять операцию вычитания.
Пример 3 (для 16 с/с): исходное число - 5B9538B6 дополнительный код A46AC74A дополнительный код дополнительного кода - 5B9538B6
|