Целые двоичные числа с произвольным знаком

Отрицательное число характеризуется тем, что перед старшим разрядом ставится бит знака s.

5.7.1. Представление с поразрядным дополнением до двух

Представление с помощью знака и модуля затрудняет сложение положительных и отрицательных чисел. При появлении знака «минус» сумматор должен переключаться в режим вычитания. Представление с поразрядным дополнением до двух (обычно кратко называемое дополнительным кодом) избавляет от этой необходимости.

При таком способе старшему разряду присваивается отрицательный вес, а остальная часть числа отображается в обычном двоичном виде. В описанном случае длина слова также должна быть фиксированной ради однозначности определения старшего разряда. Если число положительное, старший бит равен 0. У отрицательного числа старший бит равен 1, поскольку только данный разряд имеет отрицательный вес.

Пример.

Для слова длинной 8 бит:

Переход от положительного числа к отрицательному, равному ему по модулю, несколько затруднен по сравнению с представлением через знак и модуль. Пусть двоичное число BN без знакового бита характеризуется словом длиной N. Тогда знаковый разряд имеет значение –2N. Поэтому число –BN принимает вид

–BN = –2N + X.

Тогда положительный остаток X составит:

X = 2N – BN.

Это выражение называется поразрядным дополнением до двух (дополнительным кодом) BN(2) для BN и легко рассчитывается по BN. Рассмотрим наибольшее число, представимое с помощью N двоичных разрядов. Его значение равно

Если из указанного числа вычесть произвольное двоичное число BN, получим, очевидно, двоичное число как результат поразрядного вычитания, называемое поразрядным дополнением до единицы (обратным кодом) BN(1) для BN. Тогда

и BN(2) = BN(1) +1.

Таким образом, поразрядное дополнение двоичного числа до двух (дополнительный код) получается путем дополнения до единицы во всех разрядах и добавления единицы к образовавшемуся числу.

Легко показать, что для смены знака нужно не манипулировать знаковым разрядом в отдельности, а просто сформировать дополнение до двух целого числа вместе со знаковым разрядом. Следовательно, для двоичных чисел в дополнительном коде имеет место соотношение

-BN = BN(2).

Оно справедливо для случая, когда в полученном результате рассматриваются

только N разрядов, а разряды переполнения игнорируются.

Пример.

Для 8-­разрядного двоичного числа в дополнительном коде:

 

5.7.2. Расширение знакового разряда

Если требуется представить положительное число в виде слова с большим числом

разрядов, старшие разряды просто заполняют нулями. Для чисел в дополнительном коде действует иное правило: слово дополняется соответствующим количеством знаковых разрядов.

Пример.