Pack Camo

Конвертер систем счисления

Двоичная, восьмеричная, десятичная и hex, а также любая система от 2 до 36, с большими числами.

Всё выполняется локально — ничего не отправляется на сервер.

Результаты

16 бит · 13 единичных бит · 5 десятичных цифр

  • Двоичная (основание 2)
    1011 1110 1110 1111
  • Восьмеричная (основание 8)
    137 357
  • Десятичная (основание 10)
    48 879
  • Шестнадцатеричная (основание 16)
    BEEF
  • 1 1PR

Дополнительный код

Битовый шаблон для каждой разрядности, прочитанный как знаковое и беззнаковое целое. Щёлкните hex-значение, чтобы скопировать.

РазрядностьHex-шаблонЗнаковоеБеззнаковое
8 битНе помещается в 8 бит.
16 бит-1665748879
32 бит4887948879
64 бит4887948879
128 бит4887948879

Биты

Щёлкните по биту, чтобы инвертировать его.

158
70

Бит 15 — знаковый, если значение читается как знаковое.

Двоичная, восьмеричная, десятичная и hex — и любая система до 36

Введите число в двоичной, восьмеричной, десятичной, шестнадцатеричной или любой системе от 2 до 36 и сразу увидите его во всех остальных. Числа могут быть сколь угодно большими — конвертер использует целые числа произвольной точности, поэтому 64- или 128-битное значение сохраняет каждую цифру, — а отрицательные числа показаны в дополнительном коде на 8, 16, 32, 64 и 128 бит, с видом битов, где можно щёлкнуть по биту, чтобы инвертировать его. Префиксы вроде <code>0x</code> и разделители вроде <code>1_000_000</code> распознаются. Всё работает в вашем браузере.

Как перевести число в другую систему счисления

  1. 1Выберите систему, в которой вводите: Bin, Oct, Dec, Hex или Другая для любой системы от 2 до 36.
  2. 2Введите или вставьте число. Знак минус, префиксы 0x, 0b и 0o, а также пробелы, подчёркивания или запятые между цифрами допускаются.
  3. 3Смотрите результат сразу во всех системах, с цифрами, сгруппированными для удобства чтения. Выберите любую другую систему в последней строке или включите Все системы 2–36.
  4. 4Проверьте таблицу дополнительного кода со знаковым и беззнаковым значением для каждой разрядности, щёлкайте по битам в виде битов, чтобы инвертировать их, и копируйте нужную форму.

Как устроены позиционные системы счисления

В любой системе каждая цифра весит основание в степени её позиции, считая с нуля справа. В десятичной 255 — это 2×10² + 5×10¹ + 5×10⁰. В двоичной то же число — 11111111: восемь единиц, дающих 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1. В шестнадцатеричной — FF: 15×16 + 15.

Системам с основанием больше 10 нужно больше десяти символов, поэтому счёт продолжают буквы: A — это 10, B — 11 и так далее до Z для 35. Поэтому 36 — наибольшее основание, использующее обычные цифры и буквы. Регистр букв не учитывается.

Зачем программистам двоичная, восьмеричная и hex

Двоичная (основание 2)
Так машина хранит всё. Удобна для битовых флагов, масок и подсетей, но длинная: у 32-битного значения 32 цифры.
Шестнадцатеричная (основание 16)
Каждая hex-цифра — ровно четыре бита, поэтому байт — это две hex-цифры, а 32-битное значение — восемь. Используется для адресов памяти, цветов (#FF8800), хешей, UUID и дампов байтов.
Восьмеричная (основание 8)
Каждая восьмеричная цифра — три бита. Сохранилась в основном в правах доступа к файлам Unix, где 755 — это три группы битов rwx; см. <a href="/chmod-calculator">калькулятор chmod</a>.
Основание 36 и основание 62
Компактные идентификаторы без учёта регистра, например короткие URL и ID, используют основание 36 (0–9 и a–z). Основание 62 добавляет заглавные буквы и выходит за рамки этого инструмента.

Дополнительный код и отрицательные числа

Компьютеры хранят знаковые целые в дополнительном коде: при фиксированной ширине n бит отрицательное число −x хранится как 2ⁿ − x. На 8 битах −1 — это 11111111 (0xFF), −128 — 10000000 (0x80), а старший бит одновременно служит знаком. 8-битное знаковое целое вмещает от −128 до 127; те же 8 бит без знака — от 0 до 255.

Таблица дополнительного кода показывает оба прочтения для каждой распространённой разрядности. Введите 0xFFFFFFFF — и увидите, что это 4 294 967 295 как беззнаковое 32-битное целое и −1 как знаковое; введите -42 — и получите его битовый шаблон для каждой разрядности. Если значение не помещается в разрядность, строка сообщает об этом, а не обрезает его молча.

Большие числа и точность

Обычные числа JavaScript теряют точность выше 2⁵³ (9 007 199 254 740 992), поэтому многие онлайн-конвертеры ошибаются с 64-битными ID и хешами. Этот конвертер везде использует BigInt, поэтому точен для чисел любого размера — 128-битного значения, хеша SHA-256, прочитанного как целое, или числа из 20 000 цифр.

Переводятся только целые числа. Дроби в других системах редко бывают конечными (0,1 в десятичной — бесконечная периодическая дробь в двоичной), поэтому для битовых шаблонов чисел с плавающей точкой и меток времени используйте конвертер Unix timestamp.

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

Как перевести двоичное число в десятичное?
Выберите Bin, введите двоичное число и смотрите десятичную строку. Вручную сложите степени двойки для каждой 1: 1011 — это 8 + 0 + 2 + 1 = 11.
Как перевести десятичное число в шестнадцатеричное?
Выберите Dec, введите число и смотрите шестнадцатеричную строку. Вручную делите на 16 и записывайте остатки от последнего к первому: 255 ÷ 16 = 15, остаток 15, значит 255 — это FF.
Что означает префикс 0x?
0x обозначает шестнадцатеричное число в C, JavaScript, Python и большинстве других языков, так же как 0b — двоичное, а 0o — восьмеричное. Конвертер принимает эти префиксы на входе и может добавлять их к результату.
Как переводятся отрицательные числа?
В каждой системе результат сохраняет знак минус, например -2A в hex. Таблица дополнительного кода и вид битов показывают, как то же число хранится в знаковом 8-, 16-, 32-, 64- или 128-битном целом.
Почему 0xFF показывается и как 255, и как -1?
Одни и те же восемь бит означают 255 как беззнаковый байт и -1 как знаковый байт в дополнительном коде. Что верно, зависит от типа, в котором хранится значение.
Есть ли ограничение на размер числа?
Практически нет: числа до 20 000 цифр переводятся точно, потому что конвертер использует целые произвольной точности, а не числа с плавающей точкой.
Можно ли переводить дроби?
Нет, только целые числа. Большинство дробей не имеют точного представления в других системах, поэтому конвертер просит целое число, а не выдаёт округлённый ответ.
Отправляются ли мои данные куда-либо?
Нет. Весь перевод выполняется в вашем браузере.