Двоичные числа в дополнительном коде
2.4 Двоичные числа в дополнительном коде
До сих пор предполагалось, что числа положительные. Выясним, как представляются в ЭВМ числа со знаком. Если нужно использовать числа со знаком, то применяется специальный дополнительный код, что упрощает аппаратные средства ЭВМ (а именно АЛУ). Формирование дополнительного кода, или сокращённого дополнения, состоит из двух операций: получения обратного кода и добавления единицы. Рассмотрим следующую таблицу.
8-разрядное двоичное число | Десятичный эквивалент | |
Двоичного числа со знаком (отрицательное число в дополнительном коде) | Двоичного числа без знака | |
00000000 | +0 | 0 |
Рекомендуемые материалы3 lab вариант 13 6 lab вариант 13 Вариант 11 - Отчёт по практике Лабораторная работа 14А (№5) отчет+код Вариант 14 Lazarus Вывод массива в ListBox и Memo, сортировка и нахождение максимального элемента FREE Справочные материалы для выполнения лабораторных и контролируемых самостоятельных работ 00000001 | +1 | 1 |
00000002 | +2 | 2 |
…………. | ………….. | ……….. |
01111101 | +125 | 125 |
01111110 | +126 | 126 |
01111111 | +127 | 127 |
10000000 | -128 | 128 |
10000001 | -127 | 129 |
10000010 | -126 | 130 |
10000011 | -125 | 131 |
………… | ……………. | …………… |
11111101 | -3 | 253 |
11111110 | -2 | 254 |
11111111 | -1 | 255 |
Как видно из таблицы, посредством 8 бит можно представить в двоичной форме десятичные числа от -128 до +127. В этой таблице показаны два типичных для МП способы использования двоичных кодов: как двоичных чисел со знаком, так и без знака. Левый столбец содержит двоичные числа от 00000000 до 11111111, правый столбец – их десятичные эквиваленты от 0 до 255, полученные в предположении, что рассматриваются числа без знака. В центральном столбце находятся десятичные эквиваленты двоичных чисел левого столбца, полученные в предположении, что отрицательные числа записывались в дополнительном коде.
Отличительным признаком числа со знаком является особая трактовка старшего бита поля, представляющего число. В качестве поля могут выступать байт, слово, двойное слово. Понятно, что физически этот бит ничем не отличается от других. Всё зависит от команды, работающей с данным полем. Если в её алгоритме заложена работа с целыми числами со знаком, то она будет по-особому трактовать старший бит поля. Если старший бит равен 0 – число положительное. Если старший бит равен 1 – число считается отрицательным и записанным в дополнительном коде.
В среднем столбце таблицы отрицательные числа содержат 1 в восьмом разряде.
Получение дополнительного кода числа продемонстрируем на следующем примере:
Число 410 в двоичной форме 00000100
Обратный код числа 410 11111011
+
Добавляем к обратному коду 12 00000001
Число 410 в дополнительном коде 11111100
Для представления двоичного числа в дополнительном коде можно пользоваться другим способом, отличным от описанного выше и более коротким по числу операций. В поисках первого бита, равного единицы, просматривают справа налево разряды числа, начиная с наименьшего по значимости. До тех пор пока встречаются нули, их копируют в одноимённые разряды результата. Первая встретившаяся единица также копируется в соответствующий разряд результата; но каждый последующий бит исходного числа заменяется на обратный.
Люди также интересуются этой лекцией: 10.4. Способы совершения компьютерных преступлений.
Ещё пример: число 910 представим в дополнительном коде.
00001001
11110110
+
00000001
11110111