Подключиться через MCP →

Введите расчет

Математическая формула

Реклама

Результатов

Дополнительный код
01001011
Тип ввода decimal
Исходное значение 181
Разрядность 8 бит
Двоичное представление 10110101
Обратный код 01001010
Дополнительный код 01001011
Исходное десятичное (без знака) 181
Исходное десятичное (со знаком) -75
Дополнительный код (десятичное) 75
Исходное шестнадцатеричное 0xB5
Шестнадцатеричное (со знаком) 0xB5
Дополнительный код (шестнадцатеричное) 0x4B

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

Калькулятор дополнительного кода (в англоязычной литературе — two's complement) переводит числа между десятичной, двоичной и шестнадцатеричной системами и наглядно показывает, как отрицательные значения хранятся внутри компьютера. Дополнительный код — это стандартный способ представления знаковых целых чисел практически во всех современных процессорах, поэтому понимать его необходимо программистам, студентам-электронщикам и всем, кто работает с цифровой логикой. С помощью этого инструмента вы можете ввести число в любой системе счисления, выбрать разрядность (8, 16 или 32 бита) и сразу увидеть его представление в дополнительном коде вместе с десятичным значением.

Как пользоваться калькулятором

  • Введите число в поле ввода — поддерживаются десятичный, двоичный и шестнадцатеричный форматы.
  • При необходимости укажите систему счисления вашего числа.
  • Выберите разрядность: 8, 16 или 32 бита.
  • Смотрите результат: двоичное, шестнадцатеричное и знаковое десятичное значения появятся автоматически.

Разрядность важна, поскольку именно она задаёт диапазон чисел, которые можно сохранить. Например, 8-битное знаковое целое вмещает значения от −128 до 127, а 16-битное — от −32 768 до 32 767.

Разбор формулы

Чтобы получить дополнительный код двоичного числа, выполните два шага:

  • Инвертируйте все биты (замените каждый 0 на 1, а каждую 1 на 0). Так получается обратный код (one's complement).
  • Прибавьте 1 к результату.

Самый левый бит играет роль знакового: 0 означает положительное число, 1 — отрицательное. Чтобы перевести отрицательное десятичное число в дополнительный код, используется формула \(2^{n} + \text{значение}\), где n — разрядность.

$$\text{Twos Complement} = \left(\sim \text{Number}_{\,2}\right) + 1 \pmod{2^{\text{Bit Width}}}$$
Реклама
Двухшаговая схема: инверсия битов и прибавление единицы для дополнительного кода
Дополнительный код получают, инвертируя каждый бит и прибавляя 1.

Разбор примера

Переведём −5 в 8-битный дополнительный код:

  • Запишем +5 в двоичном виде: 0000 0101.
  • Инвертируем биты: 1111 1010.
  • Прибавим 1: 1111 1011.

Таким образом, −5 хранится как 1111 1011, что соответствует FB в шестнадцатеричной системе. Проверка: \(251 - 256 = -5\) (значение без знака минус 256).

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

Диапазоны знаковых целых чисел по ширине бита

Дополнение до двух — это стандартный способ представления знаковых целых чисел в компьютерах. Для заданной ширины бита \(n\) один бит действует как знаковый бит, поэтому представимый диапазон знаковых значений составляет \(-2^{n-1}\) до \(2^{n-1}-1\), в то время как беззнаковая интерпретация тех же битов охватывает \(0\) до \(2^{n}-1\). Вся арифметика переполняется по модулю \(2^{n}\).

Ширина бита \(n\) Минимум знакового \(-2^{n-1}\) Максимум знакового \(2^{n-1}-1\) Максимум беззнакового \(2^{n}-1\) Модуль \(2^{n}\)
8 -128 127 255 256
16 -32,768 32,767 65,535 65,536
32 -2,147,483,648 2,147,483,647 4,294,967,295 4,294,967,296
64 -9,223,372,036,854,775,808 9,223,372,036,854,775,807 18,446,744,073,709,551,615 18,446,744,073,709,551,616

Например, дополнение до двух десятичного числа 5 в 8-битной форме — это 251 при интерпретации как беззнаковый байт, что представляет \(-5\) как знаковое значение.

Справочник "Десятичное–Двоичное–Шестнадцатеричное" для типичных 8-битных значений

Следующая таблица сопоставляет характерные знаковые десятичные значения их 8-битным формам дополнения до двух в двоичной и шестнадцатеричной нотации. Отрицательные числа имеют старший значащий бит, установленный в 1. Для инвертирования значения инвертируйте все 8 битов и добавьте 1.

Знаковое десятичное число 8-битное двоичное Шестнадцатеричное Беззнаковое значение
-128 1000 0000 0x80 128
-64 1100 0000 0xC0 192
-5 1111 1011 0xFB 251
-1 1111 1111 0xFF 255
0 0000 0000 0x00 0
1 0000 0001 0x01 1
5 0000 0101 0x05 5
64 0100 0000 0x40 64
127 0111 1111 0x7F 127

Для независимой проверки двоичной формы вы можете преобразовать 8-битный шаблон 11111011 обратно в десятичное число, которое равно 251 как беззнаковый байт (интерпретируется как \(-5\) со знаком).

Реклама

Ключевые термины и определения

Ширина бита
Количество двоичных цифр, используемых для хранения целого числа (обычно 8, 16, 32 или 64). Она определяет модуль \(2^{n}\) и, следовательно, диапазон представимых значений.
Знаковый бит
Единственный бит, который указывает, является ли знаковое число отрицательным (1) или неотрицательным (0). В дополнении до двух это старший бит.
Старший значащий бит (СЗБ)
Самый левый бит наибольшего значения в двоичном числе. В знаковом значении дополнения до двух СЗБ одновременно выступает как знаковый бит.
Дополнение до единицы
Побитовая инверсия числа — каждый 0 становится 1 и каждый 1 становится 0 (\(\overline{B}\)). Это промежуточный шаг перед добавлением 1 для формирования дополнения до двух.
Дополнение до двух
Доминирующее кодирование знакового целого числа: инвертируйте все биты и добавьте 1, т.е. \(\overline{B}+1 \pmod{2^{n}}\). Оно дает единственное представление нуля и позволяет одному и тому же оборудованию складывать знаковые и беззнаковые числа.
Переполнение / переполнение
Что происходит, когда результат превышает представимый диапазон для ширины бита; значение переполняется по модулю \(2^{n}\). Например, добавление 1 к 8-битному максимуму 127 переполняется до -128.
Знаковое целое число в сравнении с беззнаковым целым числом
Знаковое целое число может представлять отрицательные значения, используя дополнение до двух (диапазон \(-2^{n-1}\) до \(2^{n-1}-1\)); беззнаковое целое число обрабатывает каждый битовый шаблон как неотрицательный (диапазон \(0\) до \(2^{n}-1\)). Биты идентичны — отличается только интерпретация.

Часто задаваемые вопросы

Почему компьютеры используют дополнительный код? Он позволяет выполнять сложение и вычитание одной и той же схемой, и у нуля есть только одно представление — в отличие от прямого кода (sign-magnitude) и обратного кода.

Что произойдёт, если число не помещается в выбранную разрядность? Значение переполняется и «закольцовывается», давая неожиданный результат. Чтобы этого избежать, выберите большую разрядность.

Как перевести обратно в обычное десятичное число? Если знаковый бит равен 1, снова возьмите дополнительный код и поставьте знак минус; если он равен 0, читайте число как обычное двоичное.

Последнее обновление: