Калькулятор дополнительного кода
Что такое дополнительный код?
Дополнительный код — это стандартный способ, которым компьютеры хранят знаковые целые числа — числа, которые могут быть положительными или отрицательными, — используя фиксированное число бит. Вместо того чтобы выделять отдельный символ для знака минус, отрицательные числа кодируются так, что обычное двоичное сложение просто работает, без специальной обработки знака. Почти каждый современный процессор представляет целые числа именно так.
Этот калькулятор берёт десятичное целое число и разрядность (8, 16 или 32 бит) и показывает его дополнительный код как в двоичном, так и в шестнадцатеричном виде.
Как это работает?
Для выбранной разрядности бит каждое значение хранится как беззнаковая битовая комбинация:
- Если число неотрицательно, его комбинация — это просто двоичная запись , дополненная ведущими нулями до бит.
- Если число отрицательно, его комбинация — это двоичная запись .
Поскольку во втором случае отрицательно, — это положительное значение, меньшее , поэтому оно всегда помещается в бит. Старший (крайний левый) бит в итоге равен для каждого отрицательного числа и для каждого неотрицательного — этот бит служит знаком.
Формула
Затем результат записывается ровно двоичными цифрами (или шестнадцатеричными цифрами).
Разобранные примеры
Пример 1: положительное число
Закодируйте в битах. Поскольку , комбинация — это просто в двоичном виде, дополненная до восьми цифр:
Пример 2: минус один
Закодируйте в битах. Поскольку , вычислите :
Минус один — это всегда непрерывный ряд единиц, какова бы ни была разрядность.
Пример 3: минус пять
Закодируйте в битах. Вычислите :
Справочная таблица (8 бит)
| Десятичное | Двоичный дополнительный код | Шестнадцатеричный |
|---|---|---|
| 5 | 00000101 | 0x05 |
| 0 | 00000000 | 0x00 |
| -1 | 11111111 | 0xFF |
| -5 | 11111011 | 0xFB |
| 127 | 01111111 | 0x7F |
| -128 | 10000000 | 0x80 |
Примечания
- -битное знаковое целое покрывает диапазон от до ; бит покрывают от до ; бита покрывают примерно миллиарда. Значения вне выбранного диапазона заворачиваются по модулю .
- Ведущий бит — это знак: отмечает неотрицательное число, а отмечает отрицательное.
- Чтобы перевести обычное неотрицательное число в двоичный вид без знакового бита, используйте конвертер десятичного в двоичное или общий конвертер систем счисления для других оснований.
Часто задаваемые вопросы
Что такое -1 в дополнительном коде?
В любой разрядности это все единицы: (0xFF) для 8 бит, (0xFFFF) для 16 бит и так далее.
Как получить дополнительный код отрицательного числа вручную?
Запишите модуль числа в двоичном виде, инвертируйте каждый бит, затем прибавьте единицу. Для в 8 битах: — это , инвертирование даёт , а прибавление единицы даёт — тот же результат, что и .
Почему важна разрядность?
Разрядность фиксирует, сколько бит занимает комбинация, и тем самым диапазон чисел, которые можно хранить. То же десятичное значение даёт более длинную строку ведущих нулей или единиц по мере роста разрядности.