Машинное представление знаковых чисел
Автор: romych3 • Ноябрь 15, 2018 • Лекция • 626 Слов (3 Страниц) • 429 Просмотры
Лекция 3. Машинное представление знаковых чисел
В курсе «Устройства цифровой автоматики» рассматривался аппаратный двоичный сумматор (Рис. 1). Этот сумматор способен складывать целые неотрицательные числа. Изучение свойства сумматора – сложение по модулю. Прежде чем двинуться дальше, отметим один важный нюанс.
По «железу» - отбрасываем старший разряд. По математике – сложение по модулю 2n.
[pic 1] |
Рис. 1. Аппаратный двоичный сумматор |
Оказывается, можно приспособить двоичный сумматор к вычитанию. Как известно, вычитание и сложение суть алгебраическое сложение, поэтому вычитание сводится к сложению числа со знаком «минус». Рассмотрим, как это можно сделать с помощью дополнительного кода. При этом мы автоматически поймем, как представляются знаковые числа в микропроцессорах.
Определение. Дополнительный код целого n-разрядного числа в -ичной системе счисления имеет вид:[pic 2][pic 3]
[pic 4] | (6) |
– основание системы счисления,[pic 5]
– разрядность числа,[pic 6]
- максимальное n-разрядное число в -ичной системе счисления[pic 7][pic 8]
(возможно, если сразу привести пример с двоичной системой, то будет проще восприниматься следующая теория, о чем я говорю: и , т.е. в первом случает дополнительный код 0 будет 1 , а во втором, дополнительный код 1 будет – 0 .(где то я видела этот просто пример)[pic 9][pic 10]
ТЕПЕРЬ продемонстрируем основное свойство дополнительного кода, выполнив сложение на аппаратном сумматоре:
[pic 11]
В случае, если , старший разряд выражения в скобках обусловлен числом (- НЕПОНЯТНАЯ ФРАЗА ):[pic 12][pic 13]
[pic 14] | (7) |
(Может лучше так: «В случае, если , то при делении на остаток от деления будет равен = y-x[pic 15][pic 16]
[pic 17] | (7) |
Если интуитивно понятнее представить выражение следующим образом:[pic 18]
[pic 19]
Поскольку , то остаток от деления на :[pic 20][pic 21]
[pic 22]
Обратим внимание, что последнее выражение соответствует определению дополнительного кода в двоичной системе счисления (6), то есть результатом является дополнительный код выражения:
[pic 23] | (8) |
(так как n-ой разрядности)[pic 24]
Если мы когда-нибудь потом сложим с еще каким-нибудь числом, то это сложение автоматически будет учитывать отрицательность числа .[pic 25][pic 26]
Таким образом, для того, чтобы осуществить вычитание двух чисел, достаточно рассчитать сумму уменьшаемого с дополнительным кодом вычитаемого.Однако, вычисление дополнительного кода по определению (6)трудоемко, т.к. само требует вычитания. Проблема решается за счет того, что существует быстрый способ расчета двоичного дополнительного кода. Используя математический прием «прибавить и отнять единицу», запишем:
...