Конвертер систем счисления с поддержкой отрицательных чисел

Мир компьютеров работает на нулях и единицах, но люди мыслят десятками. А программисты? Им приходится понимать все, что находится между этим. Независимо от того, отлаживаете ли вы низкоуровневый код, настраиваете цвета в CSS, рассчитываете IP-маски или решаете задачи по информатике, вы сталкиваетесь с необходимостью преобразования чисел между системами счисления.

Обычные калькуляторы в Windows или на мобильных устройствах часто медленны и неудобны. Наш интеллектуальный конвертер систем счисления был разработан программистами для программистов. Он предлагает мгновенную конвертацию в реальном времени, поддержку чрезвычайно больших чисел и, как один из немногих онлайн-инструментов, правильно работает с отрицательными числами в двоичном формате.

Что умеет этот конвертер систем счисления?

При разработке этого виджета мы сосредоточились на решении наиболее частых проблем программистов:

  1. Реактивность в реальном времени: Никакой кнопки “Вычислить”. Начните вводить данные в поле HEX, и вы сразу увидите, как меняются BIN и DEC.
  2. Поддержка отрицательных чисел (Signed Integers): Большинство онлайн-конвертеров не справятся, если вы введете -5. Мы справимся. Благодаря выбору разрядности (8, 16, 32, 64 бита) мы имитируем точное поведение процессора, используя так называемое дополнение до двух.
  3. Читабельность двоичного кода: Смотреть на 1110101011011110 утомительно для глаз. Наш инструмент может автоматически форматировать вывод по 4 бита (нибблы) в 1110 1010 1101 1110, что значительно снижает количество ошибок при копировании.
  4. Поддержка BigInt: Нужно преобразовать 64-битное число или хеш? Стандартный JavaScript ограничивается числом $2^{53}$. Наш движок справляется с числами произвольной длины в режиме “Беззнаковые” (Unsigned).

Руководство по системам счисления: Когда какую использовать?

1. Десятичная система счисления (DEC - Decimal)

  • Основание: 10 (цифры 0-9)
  • Использование: Повседневная жизнь, финансы, подсчет циклов в коде.
  • Интересный факт: Компьютеры ее не понимают, им приходится переводить ее в двоичную.

2. Двоичная система счисления (BIN - Binary)

  • Основание: 2 (цифры 0, 1)
  • Использование: Машинный код, логические вентили, маскирование IP-адресов.
  • Совет: Каждая цифра представляет собой один бит. 8 бит составляют 1 байт (Byte).

3. Шестнадцатеричная система счисления (HEX - Hexadecimal)

  • Основание: 16 (цифры 0-9, буквы A-F)
  • Использование: Компактная запись двоичного кода. Один HEX-символ представляет ровно 4 бита (ниббл). Два символа (например, FF) представляют целый байт.
  • Примеры:
    • Цвета в вебе: #FF5733 (Красный, Зеленый, Синий).
    • MAC-адреса: 00:1A:2B:3C:4D:5E.
    • Дампы памяти (Memory dumps).

4. Восьмеричная система счисления (OCT - Octal)

  • Основание: 8 (цифры 0-7)
  • Использование: Исторически более старые компьютеры, сегодня особенно права доступа Linux (chmod).
  • Пример: Команда chmod 755 устанавливает права rwx-rx-rx (чтение, запись, выполнение).

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

Это самая продвинутая функция нашего конвертера. В компьютерной памяти не существует знака “минус”. Чтобы компьютер сохранил отрицательное число, чаще всего используется метод дополнения до двух (Two’s Complement).

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

Пример: Как выглядит число -5?

Попробуйте сами в нашем конвертере:

  1. Установите разрядность на 8-бит.

    • Введите в DEC: -5.
    • Результат HEX: FB.
    • Результат BIN: 1111 1011.
    • Пояснение: $256 - 5 = 251$ (что равно FB).
  2. Установите разрядность на 16-бит.

    • Введите в DEC: -5.
    • Результат HEX: FFFB.
    • Пояснение: Поскольку у нас больше места, “единицы” заполнят оставшееся пространство слева.
  3. Установите разрядность на Только положительные (Unsigned).

    • Если вы введете -5, поле станет красным. Этот режим не поддерживает отрицательные числа, так как это потребовало бы бесконечно много единиц.

Профессиональный совет: Если вы работаете с цветами или IP-адресами, всегда используйте режим **” Только положительные”. Если вы выполняете задания по C/C++ или ассемблеру, переключитесь на 32-бит или 64-бит.


Таблица быстрых преобразований (Шпаргалка)

Для быстрой ориентации здесь приведены основные значения, которые должен знать наизусть каждый “айтишник”.

Десятичное (DEC)Шестнадцатеричное (HEX)Двоичное (BIN)Примечание
0000000Ноль
1010001
100A1010
150F1111Максимальное значение 4 бит (Ниббл)
16100001 0000
1277F0111 1111Макс. значение для signed 8-бит (char)
255FF1111 1111Макс. значение для unsigned 8-бит (байт)
65 535FFFFМакс. значение для 16-бит

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

Что означает "Bit Depth" (Разрядность)? Определяет, сколько памяти выделено для числа.
  • 8-бит: Значения от 0 до 255 (или от -128 до 127). Соответствует типу char или byte.
  • 16-бит: Значения до 65 535. Соответствует типу short.
  • 32-бит: Стандартный int в современных языках.
  • 64-бит: Для очень больших чисел (long long, BigInt).
Почему число 255 в HEX записывается как FF? Шестнадцатеричная система счисления имеет 16 цифр (0-9 и A-F), где F имеет значение 15. Число FF рассчитывается как: $(15 \times 16^1) + (15 \times 16^0) = 240 + 15 = 255$.
Как преобразовать HEX-цвет в RGB? Цвет на сайте, например, #E05412, состоит из трех байтов: Красный (E0), Зеленый (54), Синий (12). Введите в наш конвертер "E0" в поле HEX -> получите 224. Введите "54" -> получите 84. Введите "12" -> получите 18. Результат: rgb(224, 84, 18).
Что означают префиксы 0x, 0b или 0o? Чтобы программисты различали системы счисления, используются префиксы:
  • 0x = Шестнадцатеричный (например, 0xFF)
  • 0b = Двоичный (например, 0b101)
  • 0o = Восьмеричный (например, 0o755)
Наш конвертер распознает эти обозначения, но их необязательно вводить.
Почему поле стало красным? Это функция проверки ввода. Она означает, что вы ввели символ, который не принадлежит данной системе счисления. Например:
  • Буква "G" в HEX (разрешены только A-F).
  • Цифра "2" в BIN (разрешены только 0 и 1).
  • Цифра "8" в OCT (разрешены только 0-7).
Исправьте опечатку, и расчет продолжится.