Конвертация

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

Настройки
Сбросить
Поделиться
Сохранить
Встроить
Сообщить об ошибке

Поделиться калькулятором

Добавьте наш бесплатный калькулятор на ваш сайт

Источник

Пожалуйста, введите действительный URL. Поддерживаются только HTTPS.

Оформление

Цвет фокуса рамки ввода, цвет проверенного флажка, цвет наведения на выбранные элементы и т.д.

Дополнительно

Пожалуйста, согласитесь с Условиями использования.

Предварительный просмотр

Сохранить калькулятор

Настройки калькулятора

Введите значение в допустимом диапазоне.

Введите значение в допустимом диапазоне.

Введите значение в допустимом диапазоне.

Введите значение в допустимом диапазоне.

Поделиться калькулятором

Что такое дополнительный код?

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

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

Как это работает?

Для выбранной разрядности ww бит каждое значение хранится как беззнаковая битовая комбинация:

  • Если число nn неотрицательно, его комбинация — это просто двоичная запись nn, дополненная ведущими нулями до ww бит.
  • Если число nn отрицательно, его комбинация — это двоичная запись 2w+n2^w + n.

Поскольку во втором случае nn отрицательно, 2w+n2^w + n — это положительное значение, меньшее 2w2^w, поэтому оно всегда помещается в ww бит. Старший (крайний левый) бит в итоге равен 11 для каждого отрицательного числа и 00 для каждого неотрицательного — этот бит служит знаком.

Формула

pattern(n)={nif n02w+nif n<0\text{pattern}(n) = \begin{cases} n & \text{if } n \ge 0 \\ 2^{w} + n & \text{if } n < 0 \end{cases}

Затем результат записывается ровно ww двоичными цифрами (или w/4w/4 шестнадцатеричными цифрами).

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

Пример 1: положительное число

Закодируйте n=5n = 5 в 88 битах. Поскольку 505 \ge 0, комбинация — это просто 55 в двоичном виде, дополненная до восьми цифр:

5000001012=0x055 \rightarrow 00000101_2 = \text{0x05}

Пример 2: минус один

Закодируйте n=1n = -1 в 88 битах. Поскольку 1<0-1 < 0, вычислите 28+(1)=2561=2552^8 + (-1) = 256 - 1 = 255:

255111111112=0xFF255 \rightarrow 11111111_2 = \text{0xFF}

Минус один — это всегда непрерывный ряд единиц, какова бы ни была разрядность.

Пример 3: минус пять

Закодируйте n=5n = -5 в 88 битах. Вычислите 28+(5)=2565=2512^8 + (-5) = 256 - 5 = 251:

251111110112=0xFB251 \rightarrow 11111011_2 = \text{0xFB}

Справочная таблица (8 бит)

ДесятичноеДвоичный дополнительный кодШестнадцатеричный
5000001010x05
0000000000x00
-1111111110xFF
-5111110110xFB
127011111110x7F
-128100000000x80

Примечания

  • 88-битное знаковое целое покрывает диапазон от 128-128 до 127127; 1616 бит покрывают от 32,768-32{,}768 до 32,76732{,}767; 3232 бита покрывают примерно ±2.1\pm 2.1 миллиарда. Значения вне выбранного диапазона заворачиваются по модулю 2w2^w.
  • Ведущий бит — это знак: 00 отмечает неотрицательное число, а 11 отмечает отрицательное.
  • Чтобы перевести обычное неотрицательное число в двоичный вид без знакового бита, используйте конвертер десятичного в двоичное или общий конвертер систем счисления для других оснований.

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

Что такое -1 в дополнительном коде?

В любой разрядности это все единицы: 11111111211111111_2 (0xFF) для 8 бит, 111111111111111121111111111111111_2 (0xFFFF) для 16 бит и так далее.

Как получить дополнительный код отрицательного числа вручную?

Запишите модуль числа в двоичном виде, инвертируйте каждый бит, затем прибавьте единицу. Для 5-5 в 8 битах: 55 — это 0000010100000101, инвертирование даёт 1111101011111010, а прибавление единицы даёт 1111101111111011 — тот же результат, что и 2565=251256 - 5 = 251.

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

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

Сообщить об ошибке

Это поле обязательно для заполнения.