Калькулятор дополнительного кода

Преобразуйте десятичные числа со знаком или битовые шаблоны в дополнительный код на 4, 8, 16 или 32 бита.

Расчёт дополнительного кода
Введите целое десятичное число со знаком или двоичное значение с префиксом 0b.

Примеры: -5 или 0b11111011

О дополнительном коде

Дополнительный код — стандартное представление целых чисел со знаком в современных компьютерах. Используется фиксированное число битов, а старшему разряду назначается отрицательный вес. Поэтому 8-битный шаблон представляет значения от -128 до 127. Те же восемь битов можно прочитать без знака как число от 0 до 255, так что при обмене и отображении двоичных данных важна выбранная интерпретация. Положительные значения выглядят как обычные двоичные числа с ведущими нулями. Чтобы вручную получить отрицательное число, запишите его положительный модуль в выбранной разрядности, инвертируйте все биты и прибавьте единицу. Например, десятичное 5 в восьми битах — 00000101. Инверсия даёт 11111010, а прибавление единицы — 11111011, представление -5. Калькулятор получает тот же ответ арифметикой по модулю 2 в степени разрядности. Разрядность — часть представления. Минус пять — это 1011 в четырёх битах, 11111011 в восьми и 1111111111111011 в шестнадцати. Расширяя отрицательное число, повторяют ведущую единицу: это знаковое расширение. Положительное число расширяют нулями. Удаление значимых битов может изменить значение, поэтому калькулятор отклоняет десятичные числа вне выбранного знакового диапазона. Для декодирования посмотрите на старший бит. Если он нулевой, знаковая и беззнаковая трактовки совпадают. Если это единица, вычтите из беззнакового значения 2 в степени разрядности. Так, 11111011 без знака равно 251, но 251 - 256 даёт -5 со знаком. Это правило часто быстрее обратного выполнения инверсии с прибавлением единицы. Дополнительный код имеет удобные арифметические свойства. Сложение и вычитание используют один двоичный сумматор для знаковых и беззнаковых чисел, а переполнение обрабатывается по контексту. В отличие от обратного кода, ноль имеет лишь одно представление. Несимметричный диапазон содержит на одно отрицательное значение больше, поскольку ноль занимает неотрицательный шаблон. Калькулятор полезен в архитектуре компьютеров, цифровой логике, встроенном программировании, сетевых протоколах, отладке и дискретной математике. Всегда согласовывайте разрядность с системой или типом данных. Шаблон без разрядности и указания знаковости — неполная информация; другая конвенция может дать совершенно иное десятичное число.

Примеры дополнительного кода

Десятичное число и разрядностьБитовый шаблонПояснение
-5 в 8 битах11111011Инвертируйте 00000101 и прибавьте единицу.
-8 в 4 битах1000Это минимальное знаковое четырёхбитное значение.
42 в 8 битах00101010Положительные значения используют обычный двоичный код с ведущими нулями.

Как пользоваться калькулятором дополнительного кода

  1. Введите целое десятичное число со знаком или битовый шаблон с префиксом 0b.
  2. Выберите разрядность целевой системы.
  3. Нажмите «Рассчитать дополнительный код».
  4. Сравните двоичное представление и десятичные значения со знаком и без знака.

Вопросы о дополнительном коде

Почему важна разрядность?

Она задаёт модуль и знаковый диапазон. Одно число дополняется по-разному и может не поместиться в меньшую разрядность.

Какой диапазон помещается в восемь бит?

Восьмибитное число в дополнительном коде лежит от -128 до 127. Беззнаковая интерпретация шаблона — от 0 до 255.

Как изменить знак двоичного числа?

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

Почему знаковый и беззнаковый результаты отличаются?

Они придают старшему биту разный позиционный смысл. Хранимые биты одинаковы, меняется только интерпретация.

Есть ли в дополнительном коде отрицательный ноль?

Нет. Ноль имеет единственное представление из нулевых битов. Это важное преимущество перед прямым и обратным кодами.