Блог
Русский

Перевод систем счисления онлайн — двоичная, восьмеричная, hex

Системы счисления 2/8/10/16/36 и произвольная — на BigInt, с отрицательными числами и префиксами 0x/0b/0o

Работает в браузере · файлы никуда не загружаются

Что это за инструмент

Одно и то же число в двоичной системе — 11111111, в шестнадцатеричной — ff, в десятичной — 255. Адреса памяти, коды цветов, битовые маски и права доступа к файлам в Unix (восьмеричные) постоянно заставляют читать значение в другой системе счисления. Введите одно число и сразу увидите его в системах 2, 8, 10, 16, 36 и в системе по вашему выбору.

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

  1. Введите число. Пробелы и _ игнорируются как разделители разрядов, поэтому 1111_0000 подойдет.
  2. Выберите систему ввода. По умолчанию стоит «Авто»: ищется префикс 0x, 0b или 0o, а без него число считается десятичным.
  3. Скопируйте нужное значение из таблицы результатов. Строка произвольной системы принимает любое основание от 2 до 36.
  4. Включите заглавные цифры, если вам привычнее FF, чем ff.

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

  • Разбор выполняется через BigInt. Символы читаются слева направо и накапливаются по формуле value = value × base + digit, поэтому ограничения на величину нет, кроме лимита ввода в 20 000 символов.
  • Значения цифр берутся из 0-9 и букв a-z (регистр не важен) и означают 0-9 и 10-35. Поэтому максимальное основание — 36.
  • Цифра, значение которой больше или равно основанию, выдается как ошибка с позицией и списком цифр, допустимых в этой системе. 2 в двоичной или 9 в восьмеричной системе — ошибка.
  • Знак (- или +) распознается только в самом начале и никогда после префикса.
  • Число бит — это длина модуля числа в двоичной записи; ноль считается одним битом.

Примеры

Ввод Система Двоичная Шестнадцатеричная Десятичная
255 10 11111111 ff 255
0xff Авто 11111111 ff 255
-0b101 Авто -101 -5 -5
18446744073709551617 10 1, шестьдесят три нуля, 1 10000000000000001 18446744073709551617

Как обычное число JavaScript 2^64+1 теряет последнюю цифру, а здесь получается точно: 10000000000000001 в шестнадцатеричной системе.

Полезно знать

  • В восьмеричной системе записывают права chmod 755, в шестнадцатеричной — адреса и цвета вроде #1e90ff, а 36-ричная удобна для коротких компактных ID.
  • Если затесался символ, который не является цифрой, например буква в десятичном числе или кириллица, в сообщении об ошибке будет указана его позиция.

Частые вопросы

Очень большие числа переводятся точно?

Да. Обычные числа JavaScript точны только до 2^53, а здесь расчет ведется в целых числах произвольной точности (BigInt), поэтому значения больше 2^64 переводятся без ошибки хотя бы в одной цифре. Длина ввода — до 20 000 символов.

Как отображаются отрицательные числа?

Знак сохраняется, а переводится модуль числа, поэтому -255 в шестнадцатеричной системе — это -ff. Это не битовое представление в дополнительном коде; если оно нужно для фиксированной ширины, например 8 бит, интерпретируйте результат самостоятельно.

Можно ли вводить префиксы 0x или 0b?

Если система ввода — «Авто», распознаются префиксы 0x (шестнадцатеричная), 0b (двоичная) и 0o (восьмеричная), а число без префикса считается десятичным. Если система выбрана вручную, принимается только соответствующий ей префикс; в 16-ричной системе текст 0b1 — это цифры 0, b, 1, а не префикс.

А дробные числа?

Поддерживаются только целые числа. Десятичная точка выдается как недопустимый символ с указанием позиции.

Не нашли нужный инструмент?