UTILS.
100% в браузере
🔢

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

Конвертируйте знаковые целые числа в/из двоичного и hex дополнительного кода при разрядности 4, 8, 16, 32 или 64 бита, с обратным кодом и беззнаковой интерпретацией.

Введите число или битовый шаблон выше.

Об этом инструменте

Конвертер дополнительного кода кодирует знаковое целое число в его двоичное и шестнадцатеричное представление в дополнительном коде при выбранной вами разрядности (4, 8, 16, 32 или 64 бита) и декодирует двоичный или hex-шаблон обратно в знаковое значение, которое он представляет. Он использует BigInt повсюду, поэтому 64-битные значения обрабатываются точно без потери точности.

Для разрядности N бит знаковый диапазон составляет от −2^(N−1) до 2^(N−1)−1. Чтобы закодировать десятичное d: если d неотрицательно, шаблон — это просто d; если d отрицательно, шаблон — это 2^N + d (эквивалентно, инвертировать все биты |d| и прибавить 1). Инструмент выводит N-битный двоичный с ведущими нулями, N/4-значный hex, обратный код (побитовое НЕ) и беззнаковую интерпретацию тех же битов, и он помечает ошибку переполнения, когда значение не помещается в выбранную разрядность.

Чтобы декодировать, вставьте двоичный или hex-шаблон, и инструмент считывает его старший бит: если старший значащий бит установлен, значение — это pattern − 2^N (отрицательное), иначе это сам шаблон. Он всегда показывает и знаковое, и беззнаковое прочтение рядом, что и есть та неоднозначность, которую дополнительный код разрешает на аппаратном уровне. Все вычисления локальны для вашего браузера.

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

Каков диапазон для каждой разрядности?
Разрядность N бит представляет знаковые значения от −2^(N−1) до 2^(N−1)−1. Итак, 8-бит охватывает от −128 до 127, 16-бит от −32768 до 32767, а 32-бит около ±2.1 миллиарда. Значения вне диапазона вызывают предупреждение о переполнении.
Как кодируется отрицательное число?
Возьмите величину, инвертируйте каждый бит (обратный код) и прибавьте 1. Эквивалентно, шаблон равен 2^N плюс отрицательное число. Например, −1 в 8 битах — это 11111111, а −42 — это 11010110.
Зачем показывать и беззнаковое значение?
Один и тот же битовый шаблон имеет два прочтения: знаковое (дополнительный код) и беззнаковое. Показ обоих проясняет, что, например, 8-битный шаблон 11111111 — это −1 со знаком, но 255 без знака — интерпретация зависит от того, как аппаратура его трактует.
Может ли он обрабатывать 64-битные значения точно?
Да. Конвертер использует арифметику произвольной точности BigInt, поэтому 64-битные шаблоны и их знаковые значения вычисляются точно без округления, которое обычные числа JavaScript внесли бы за пределами 2^53.

Больше инструментов