ToolActToolAct

Инструмент преобразования систем счисления

Мгновенная конвертация между двоичной, восьмеричной, десятичной, шестнадцатеричной и произвольными системами счисления

Ввод
Результаты конвертации
Двоичная (2)
Восьмеричная (8)
Десятичная (10)
Шестнадцатеричная (16)

Исходная система

Что такое конвертация систем счисления?

Конвертация систем счисления — это процесс перевода числа из одной системы счисления в другую. Основные системы: двоичная (основание 2), восьмеричная (основание 8), десятичную (основание 10) и шестнадцатеричная (основание 16).

В информатике двоичная система является наиболее фундаментальной, поскольку все данные в компьютере хранятся в двоичном виде. Шестнадцатеричная система широко используется для адресов памяти и цветовых значений, так как она более компактна и удобна для чтения.

Конвертер систем счисления полезен, когда значения нужно читать или сравнивать в decimal, binary, octal, hexadecimal и других основаниях. Типичные случаи — программирование, bit masks, адреса памяти, цветовые значения, протоколы, обучение и embedded-разработка. Важно учитывать знак, префиксы вроде 0x, ведущие нули, группировку и максимальный размер целого в целевой системе. Математически правильное преобразование может отличаться от того, как язык хранит signed или overflow значения.

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

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

  1. Введите число для конвертации в поле ввода (например, 255, FF, 11111111)
  2. Выберите систему счисления входного числа: двоичную, восьмеричную, десятичную, шестнадцатеричную или произвольную
  3. Инструмент автоматически переводит введённое число в двоичную, восьмеричную, десятичную и шестнадцатеричную системы
  4. Нажмите кнопку «Копировать» рядом с нужным результатом, чтобы скопировать его в буфер обмена

Советы по конвертации

  • Убедитесь, что введённые цифры допустимы для выбранной системы счисления; например, двоичная принимает только 0 и 1, а шестнадцатеричная — 0-9 и A-F.
  • Большие целые числа могут выходить за пределы безопасного диапазона JavaScript, поэтому критичные инженерные значения проверяйте специализированным инструментом произвольной точности.

Применение

Просмотр одного числа в нескольких системах счисленияВыберите двоичную, восьмеричную, десятичную, шестнадцатеричную или произвольную систему счисления от 2 до 36, а затем просмотрите одно и то же значение сразу в системах с основаниями 2, 8, 10 и 16. Каждый результат можно скопировать отдельно для вставки в исходный код, документацию, таблицы регистров или комментарии к ревью, где одно число часто показывают в двух системах рядом.
Перевод значений из логов, регистров и заметок к протоколамИспользуйте инструмент для масок правил, регистров устройств, небольших числовых идентификаторов, цветовых значений, битовых флагов и примеров из документации, где одно и то же число удобнее анализировать в другой системе. Конвертация выполняется полностью на странице, поэтому внутренние адреса регистров, коды операций или фрагменты спецификаций можно проверять без отправки через внешний сервис.
Ограничение рамками целочисленной конвертацииСтраница использует JavaScript parseInt и Number.toString, поэтому лучше всего подходит для обычных беззнаковых целых чисел. Очень большие целые, дробные значения, отрицательные двоичные формы и интерпретация дополнительного кода по-прежнему требуют специализированного калькулятора.
Побитовый разбор комбинаций флаговКонвертируйте маску правил или значение регистра в двоичную систему, затем группируйте по 4 или 8 бит, чтобы прочитать отдельные флаги, такие как 0x1F0 или 0b1010_0001. Полезно при документировании POSIX-правил, GPIO-регистров или feature flags, где каждый бит имеет имя, скрытое за целым числом. Правило группировки основано на соотношении 2^4 = 16 между двоичной и шестнадцатеричной системами: каждые 4 бита соответствуют одной hex-цифре, каждые 3 бита — одной восьмеричной; заполнение ведущими нулями позволяет 8-битному байту (0xFF) ровно соответствовать двум hex-цифрам.
Работа с дополнительным кодом и знаковыми разрядамиКогда исходное значение — знаковое int8, int16 или int32, помните, что страница возвращает беззнаковое представление. Для интерпретации отрицательных значений из дампов протоколов, полей структур или логов встраиваемой прошивки конвертируйте вручную с учётом разрядности. Дополнительный код означает, что w-битное значение v с установленным старшим битом представляет v - 2^w, поэтому 8-битный байт 0xFF — это 255 беззнаковых, но -1 знаковых, а 16-битное слово 0x8000 — это -32768. Заполнение ведущими нулями важно для полей фиксированной ширины, таких как MAC-адреса, hex-группы IPv6 или 24-битные цветовые каналы.

Технический принцип

Конвертация систем счисления — это арифметика позиционной записи. Цифра d на позиции p в основании b вносит вклад d × b^p в общее значение, а значение N-значного числа равно Σᵢ₌₀..N₋₁ dᵢ × b^(N-1-i). Десятичная система имеет основание 10, двоичная — основание 2, восьмеричная — основание 8, шестнадцатеричная — основание 16. Всю работу выполняют два алгоритма: для перевода из основания b₁ в десятичную систему вычисляется полином (метод Горнера — стандартная ин-плейс форма: `value = value * b₁ + digit`); для перевода из десятичной системы в основание b₂ выполняется последовательное деление на b₂ сбором остатков, затем они записываются в обратном порядке. Оба алгоритма работают за O(N) на цифру и O(1) по дополнительной памяти и подходят для любого основания от 2 до 36 (цифры '0'-'9' + 'A'-'Z' как 10-35). Большинство практических задач конвертации пропускают промежуточный десятичный шаг и переходят напрямую между основаниями, являющимися степенями двойки. Двоичная ↔ восьмеричная группирует 3 двоичных цифры на одну восьмеричную (поскольку 2³ = 8), а двоичная ↔ шестнадцатеричная группирует 4 двоичных цифры на одну шестнадцатеричную (2⁴ = 16). Поэтому 0xFF = 11111111₂, а 0755 (восьмеричная, Unix-права файла) = 111101101₂ = 493 десятичных. Страница также обрабатывает основание 32 (RFC 4648 §6, используется в некоторых токенах аутентификации) и основание 36 (традиционный компактный алфавит для сокращения URL '0'-'9' + 'A'-'Z'), где перевод через двоичную систему — единственный разумный способ, поскольку 36 не является степенью двойки. Данная страница использует встроенную функцию JavaScript parseInt(value, base) для парсинга и (123).toString(base) для вывода. Обе ограничены точностью Number: IEEE 754 binary64 имеет 53-битную мантиссу, поэтому целые значения больше 2⁵³ - 1 = 9 007 199 254 740 991 теряют точность. Например, Number.MAX_SAFE_INTEGER + 1 равно Number.MAX_SAFE_INTEGER + 2 — два больших значения не представимы. Для конвертации целых чисел произвольной точности BigInt — современное решение: логика parseInt на BigInt несложна, а BigInt.prototype.toString(base) обрабатывает любое основание от 2 до 36. Криптографические библиотеки, генераторы UUID и математика больших чисел (BIP-32 HD-кошельки, ключи RSA) используют BigInt по этой причине. Тот же алгоритм обрабатывает знаковые числа и числа с плавающей точкой, с некоторыми оговорками. В дополнительном коде (доминирующее знаковое представление для целых чисел фиксированной ширины, начиная с IBM System/360 1965 года и во всех современных процессорах) -1 — это все единицы (0xFFFFFFFF для 32 бит, 0xFFFFFFFFFFFFFFFF для 64), а старший бит — знаковый. Для перевода отрицательного целого числа в дополнительном коде в десятичную систему нужно вычесть 2^n (где n — битовая ширина). Для чисел с плавающей точкой IEEE 754 binary64 хранит знак (1 бит), экспоненту (11 бит, со смещением 1023) и мантиссу (52 бита с неявным ведущим 1). Десятичное преобразование произвольного binary64 поэтому не является точным — 0,1 в IEEE 754 равно 0,1000000000000000055511151231257827021181583404541015625, поэтому финансовый код использует целые центы или десятичные библиотеки вместо float.

  • Позиционная запись: цифра d на позиции p в основании b вносит вклад d × b^p. Полное значение N-значного числа равно Σᵢ dᵢ × b^(N-1-i). Метод Горнера вычисляет это за O(N) времени и O(1) памяти: `value = value * b + digit`.
  • Для перевода из десятичной системы в основание b выполняется последовательное деление на b сбором остатков; чтение их в обратном порядке даёт целевое представление. Алгоритм работает за O(N) для N-значного результата.
  • Прямая конвертация двоичная ↔ шестнадцатеричная: каждая hex-цифра — это ровно 4 двоичных цифры, поэтому 0xFF = 11111111₂. Двоичная ↔ восьмеричная: каждая восьмеричная цифра — 3 двоичных, поэтому 0755 = 111101101₂.
  • Дополнительный код (используется всеми современными процессорами для знаковых целых чисел): старший бит — знаковый, а отрицательные числа кодируются как 2^n - |x|. -1 в 32-битном дополнительном коде — это 0xFFFFFFFF.
  • IEEE 754 binary64 (Number в JavaScript): 1 знаковый бит + 11-битная экспонента со смещением (смещение 1023) + 52-битная мантисса с неявным ведущим 1. Максимальное безопасное целое — 2⁵³ - 1 = 9 007 199 254 740 991; значения выше теряют точность.
  • parseInt(value, base) и Number.prototype.toString(base) работают для оснований 2-36 и используют 53-битную мантиссу Number. Для произвольной точности используйте BigInt('value', base) и BigInt.prototype.toString(base).
  • Основание 32 (RFC 4648 §6) и основание 36 ('0'-'9' + 'A'-'Z') требуют двоичную систему как промежуточный шаг, поскольку 32 и 36 не являются степенями двойки — цифра не соответствует фиксированному числу битов.
  • Граничный случай: целочисленное деление с остатком для отрицательных оснований или отрицательных чисел в дополнительном коде требует обработки знака; страница обрабатывает ввод как беззнаковое абсолютное значение и повторно применяет знак к конечному результату.

Примеры

Десятичная в шестнадцатеричную

Вход:    255 (десятичная)
Выход:   FF (шестнадцатеричная)
Примечание: часто используется в значениях цвета CSS, например #FF0000 для красного

Двоичная в десятичную

Вход:    11111111 (двоичная)
Выход:   255 (десятичная)
Примечание: максимальное значение 8-битного двоичного числа, т. е. наибольший беззнаковый байт

Шестнадцатеричная в двоичную

Вход:    1A3F (шестнадцатеричная)
Выход:   1101000111111 (двоичная)
Примечание: каждые 4 двоичных разряда соответствуют 1 шестнадцатеричному разряду

Восьмеричная в шестнадцатеричную

Вход:    377 (восьмеричная)
Выход:   FF (шестнадцатеричная)
Примечание: права доступа Unix 377 (rwxrwxrwx) равны hex FF

Произвольное основание (Base-36)

Вход:    ZZ (base-36)
Выход:   1295 (десятичная)
Примечание: base-36 использует 0-9 и A-Z; ZZ — наибольшее 2-значное значение в этой системе

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

Какие системы счисления поддерживаются?

Двоичная (основание 2), восьмеричная (8), десятичная (10), шестнадцатеричная (16), а также произвольные системы счисления с основанием от 2 до 36. Основания выше 36 потребовали бы расширенного алфавита и здесь не рассматриваются.

Как используются буквы в системах счисления выше 10?

В системах с основанием больше 10 используются буквы: A=10, B=11, … F=15 в шестнадцатеричной; от A=10 до Z=35 в системе по основанию 36. На вход принимаются и заглавные, и строчные буквы; на выходе по умолчанию заглавные.

Как преобразовать отрицательное или дробное число?

Отрицательные целые работают напрямую — страница хранит их внутри как JavaScript BigInt или знаковые целые. Дробные значения (например, 0.5 в десятичной → 0.1 в двоичной) поддерживаются, но ограничены примерно 15 значащими цифрами из-за точности с плавающей точкой.

Чем отличается дополнительный код от знака и величины?

Дополнительный код (two's complement) — то, как компьютеры представляют отрицательные целые: старший бит означает знак, остальное кодирует значение со смещением. Знак и величина (signed magnitude) просто переключает знаковый бит. Страница обычно показывает знак и величину (как обычная десятичная запись со знаком), а не битовый шаблон. Если нужен дополнительный код, используйте «программистский» калькулятор.

Почему мой шестнадцатеричный результат дополнен иначе, чем в другом инструменте?

Hex-значения могут дополняться слева до байта или машинного слова, а могут и нет. 0xff и 0x000000FF — это одно и то же число, просто отображённое с разным дополнением. Страница не дополняет автоматически; добавляйте ведущие нули вручную, если этого требует контекст (фиксированная ширина MAC-адреса, сегмента IPv6 и так далее).

Есть ли ограничения на размер числа?

JavaScript BigInt справляется с целыми произвольной длины, поэтому преобразования между системами счисления для целых работают для чисел любой практической длины. Для дробей предел задаётся 15–17 значащими цифрами типа Number.

Можно ли здесь конвертировать IP-адреса или цветовые коды?

Только косвенно: переводите по байту. Для IP в формате dotted-quad преобразуйте каждый октет из десятичной в шестнадцатеричную; для цветовых кодов #RRGGBB разбивайте на три пары по байту. Парсинг проще делать в специализированных инструментах для IP и цветов.

Похожие инструменты

Запрос таблицы ASCII

Бесплатная онлайн-таблица ASCII: управляющие, печатные и расширенные символы с кодами. Ищите и фильтруйте значения ASCII для быстрого поиска нужного символа.

Конвертер Unicode

Бесплатный онлайн-конвертер Unicode с поддержкой форматов \uXXXX, &#xXXXX; и других. Удобно работать с интернационализированным текстом и кодировками.

Научный калькулятор

Бесплатный онлайн-калькулятор с тригонометрическими функциями, логарифмами, экспонентами, факториалами, степенями и режимом градусов/радиан

Конвертер единиц длины

Онлайн-конвертер единиц длины — перевод между километрами, метрами, сантиметрами, миллиметрами, микрометрами, нанометрами, милями, ярдами, футами, дюймами, морскими милями, ли, чжан, чи и цунь. Точный расчёт, мгновенный результат.

Конвертер единиц хранения данных

Онлайн конвертер единиц хранения данных — перевод между битами, байтами, КБ, МБ, ГБ, ТБ, ПБ, ЭБ, КиБ, МиБ, ГиБ, ТиБ, ПиБ, ЭиБ. 14 единиц хранения. Точные расчёты, мгновенный результат.

Генератор хэшей

Бесплатный онлайн-генератор хэшей: MD5, SHA-1, SHA-256 и SHA-512. Мгновенно вычисляйте хэш текста для проверки целостности данных и хранения паролей.