Для получения дополнительного k-разрядного кода отрицательного числа необходимо следующее:

  • Модуль числа представить прямым кодом в k двоичных разрядах.
  • Значения всех бит инвертировать (все нули заменяются на единицы, а единицы на нули), таким образом получается k-разрядный обратный код исходного числа.
  • К полученному обратному коду, трактуемому как k-разрядное неотрицательное двоичное число, прибавить единицу.

Заметим, что получение дополнительного кода одного и того же отрицательного числа для типов разной разрядности на основе ранее полученного дополнительного кода сводится к удалению или добавлению левых дополнительных разрядов, заполненных единицами.

При представлении отрицательного числа m дополнительным кодом в самом левом (знаковом) бите записывается знак отрицательного числа (единица), а в остальных разрядах записывается число 2k-1 — |m|. Если это число рассматривать как положительное, то максимальное по модулю отрицательное число, которое можно представить в k— разрядах, равно -2k-1.

Описанный выше алгоритм получения дополнительного кода для отрицательного числа знаковую единицу в левом разряде образует автоматически при |m| ≤ 2k-1. Если же 2k-1 < |m| < 2k, то попытка реализации данного алгоритма приведет к тому, что в левом разряде будет находиться цифра 0. Это соответствует компьютерному представлению положительных чисел, что неверно. Именно поэтому в определении дополнительного кода на значение наложено ограничение.

Для полноты рассмотрения получим дополнительно 8-разрядный код для чисел -128 (минимальное представимое число), -127 (число, обратное максимально представимому) и -0.

Число
-128
-127
-0
Прямой код модуля
10 000 000
01 111 111
00 000 000
Обратный код
01 111 111
10 000 000
11 111 111
Дополнительный код
10 000 000
10 000 001
00 000 000

Отметим, что для числа -128 прямой код совпадает с дополнительным, а дополнительный код числа -0 совпадает с обычным нулем. Однако при преобразовании обратного кода для числа -0 в его дополнительный код правила обычной двоичной арифметики оказываются нарушенными, а именно:

1111 11112 +1 = 1 0000 00002 = 2k

Но, поскольку описанные действия производятся в k двоичных разрядах, левая единица результата оказывается лишней и игнорируется.

Отметим еще раз, что в k-разрядной целочисленной компьютерной арифметике 2k = 0.

content

Share
Published by
content

Recent Posts

Копирование и размножение планов и карт

Если основа оригинала (карты пли плана) прозрачна, то копию можно снять при помощи стола со…

6 месяцев ago

Решение задач на топографических планах (картах)

Определение координат точки. Пусть точка А (рис. 32) находится в квадрате, абсциссы и ординаты вершин…

6 месяцев ago

Рельеф местности и способы его изображения

Рельефом местности называется совокупность неровностей физической поверхности земли. В зависимости от характера рельефа местность делят…

6 месяцев ago

Условные знаки топографических планов и карт

Для обозначения на планах и картах различных предметов местности, применяются специально разработанные условные знаки. Для обличения…

7 месяцев ago

Номенклатура карт и планов

В инженерной геодезии чаще всего пользуются топографическими картами. Их составляют в масштабах 1:10000, 1:25000, 1:50000…

7 месяцев ago

Масштабы

Масштабом называется отношение длины отрезка линии на плане (профиле) к соответствующей проекции этой линии на…

7 месяцев ago