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

Это калькулятор дополнительного кода. Запишите знаковое целое в биты или прочитайте hex/двоичное как знаковое. −1 на 8 битах — 0xFF. −52 — 0xCC. Тот же байт 0xFF без знака равен 255.

Нажмите бит, чтобы переключить. Крайний слева (золотое кольцо) — знаковый бит.

Нажмите значение, чтобы скопировать

Дополнить, инвертировать, +1

Сложение / вычитание в доп. коде (A и B — знаковые десятичные)

Примеры — нажмите образец

Один и тот же 4-битный шаблон без знака, знак-модуль, обратный и дополнительный код — нажмите строку, чтобы подставить

Binary Без знака Знак-модуль Обратный код Two's
00000000
01015555
01117777
10008−0−7−8
101010−2−5−6
111115−7−0−1

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

Записывает знаковое целое в дополнительный код или читает hex/двоичный шаблон как знаковое. Ширина: Авто, 4, 8, 12, 16, 32 и 64. −1 на 8 битах — 0xFF; −52 — 0xCC; 20 — 0x14. Беззнаковое чтение тех же битов: 0xFF = 255. HEX, Binary, Decimal не переводятся. Это не побитовый калькулятор HEX и не беззнаковый HEX-калькулятор.

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

  1. Выберите Decimal / Hex / Binary и ширину. Десятичное пишет дополнительный код. Hex и двоичное дополняются нулями и читаются как знаковые. Авто берёт наименьшую подходящую ширину.
  2. Сетка — шаблон. Крайний слева бит (золотое кольцо) — знаковый; нажмите, чтобы переключить. Карточки: hex, знаковое десятичное, беззнаковое, обратный код и отрицание инверсия+1.
  3. Отрицательное десятичное: дополнить модуль, инвертировать, +1. −52 на 8 битах: 0011 0100 → 1100 1011 → 1100 1100 (0xCC). Положительные не инвертируют.
  4. A и B — знаковые десятичные той же ширины. A+B и A−B крутятся по модулю 2^N; переполнение, если математическая сумма не влезает. Пример — −1 на 8 битах → 0xFF. Ещё чипы: −52, 20, 0xFF, 0x80 (−128) и 1010 на 4 битах (−6).
  5. Таблица 4 бит сравнивает беззнаковое, знак-модуль, обратный и дополнительный код. Строка подставляет шаблон.

Замечания

Шаблон: TC = (2^N + X) mod 2^N. Знаковый диапазон 8 бит −128…127; 4 бита −8…7. Более короткий hex/двоичный дополняется нулями, без знакового расширения. Отрицание 0x80 на 8 битах остаётся 0x80: +128 нет. См. IEEE 754, конвертер порядка байт.

Где применять

  • Читать знаковый байт в дампе: 0xFF как signed char это −1, как unsigned — 255.
  • Проверить инверсию+1 и почему A−B это A плюс дополнительный код B.

Вопросы

Почему −128 нельзя отрицать на 8 битах?

Диапазон несимметричен. Инверсия 1000 0000 плюс 1 снова даёт 1000 0000. Математическое +128 не влезает.

0xFF это −1 или 255?

Зависит от чтения. Страница показывает знаковое значение в доп. коде и беззнаковое чтение тех же битов.

Что здесь обратный код?

Все биты текущего шаблона перевёрнуты без +1. Дополнительный код отрицательного числа — инверсия модуля плюс 1.