Перевод чисел между системами счисления в Excel
Чтобы перевести число между системами счисления в Excel, используйте встроенные инженерные функции: DEC2BIN (десятичное в двоичное), BIN2DEC, DEC2HEX, HEX2DEC, DEC2OCT и OCT2DEC. Они позволяют мгновенно конвертировать целые числа между десятичной, двоичной, восьмеричной и шестнадцатеричной системами без сложных вычислений.
Основные функции для конвертации
Вкладка «Формулы» → группа «Другие функции» → «Инженерные» содержит все необходимые инструменты. Синтаксис большинства функций прост: =ИМЯ_ФУНКЦИИ(число; [разряды]).
Из десятичной системы
Эти функции преобразуют обычное число (основание 10) в другие форматы:
=DEC2BIN(число; [разряды])— перевод в двоичную систему (0 и 1). Аргумент[разряды]задает минимальное количество знаков (добавляет ведущие нули).=DEC2OCT(число; [разряды])— перевод в восьмеричную систему (цифры 0–7).=DEC2HEX(число; [разряды])— перевод в шестнадцатеричную систему (0–9, A–F).
Аргумент «разряды» полезен для выравнивания данных. Например, =DEC2HEX(255; 4) вернет 00FF, а не просто FF. Это важно при работе с адресами памяти или цветовыми кодами.
В десятичную систему
Обратные функции принимают строку или число в другой системе и возвращают десятичное значение:
=BIN2DEC(число)— из двоичной.=OCT2DEC(число)— из восьмеричной.=HEX2DEC(число)— из шестнадцатеричной.
Важно передавать исходные значения как текст, если они содержат буквы (A-F) или начинаются с нуля, чтобы Excel не интерпретировал их ошибочно.
Примеры использования формул
Рассмотрим практические кейсы перевода конкретных значений.
| Задача | Формула | Результат | Пояснение |
|---|---|---|---|
| Десятичное 10 в двоичное | =DEC2BIN(10) | 1010 | Базовая конвертация |
| Двоичное 1010 в десятичное | =BIN2DEC("1010") | 10 | Вход как текст надежнее |
| Десятичное 255 в HEX (4 знака) | =DEC2HEX(255; 4) | 00FF | С добавлением ведущих нулей |
| Шестнадцатеричное 1A в десятичное | =HEX2DEC("1A") | 26 | Буквы регистр не важен |
| Десятичное 64 в восьмеричное | =DEC2OCT(64) | 100 | Стандартный перевод |
Ограничения и работа с отрицательными числами
Стандартные функции Excel имеют строгие ограничения по диапазону значений, так как используют 10-разрядное представление (для двоичной системы).
-
Диапазон значений:
- Для
DEC2BINиBIN2DECдопустимый диапазон: от -512 до 511. - Попытка перевести число 512 или -513 вернет ошибку
#ЧИСЛО!(#NUM!). - Для шестнадцатеричной и восьмеричной систем диапазоны шире (до 28 бит со знаком), но также конечны.
- Для
-
Отрицательные числа:
- Функции поддерживают отрицательные значения, используя дополнительный код (two's complement).
- Например,
=DEC2BIN(-1)вернет1111111111(10 единиц). - При использовании аргумента
[разряды]для отрицательных чисел функция может вернуть ошибку, если указанное количество разрядов недостаточно для представления знака.
Не пытайтесь использовать эти функции для чисел больше 511 (в случае двоичной системы). Для работы с большими значениями (например, 32-битными или 64-битными идентификаторами) потребуется использование надстроек VBA или разбиение числа на части.
Конвертация через промежуточную систему
Прямого перевода, например, из двоичной сразу в шестнадцатеричную (BIN2HEX) в стандартном наборе функций нет. Алгоритм действий всегда двухступенчатый:
- Перевод из исходной системы в десятичную.
- Перевод из десятичной в целевую систему.
Пример: Перевод двоичного 11110000 в шестнадцатеричный вид.
Формула: =DEC2HEX(BIN2DEC("11110000"))
Результат: F0
Вы можете вкладывать функции друг в друга для экономии места в ячейках.
Работа с дробными числами
Встроенные инженерные функции работают только с целыми числами. Если вам нужно перевести дробь (например, 10.5 в двоичную систему), стандартные формулы выдадут ошибку или обрежут дробную часть.
Для перевода дробей используется алгоритм ручного расчета:
- Целая часть переводится стандартными функциями.
- Дробная часть умножается на основание новой системы (на 2 для двоичной).
- Целая часть результата записывается как следующий разряд.
- Процесс повторяется с новой дробной частью до получения нуля или достижения нужной точности.
Автоматизировать этот процесс в ячейках можно только с помощью пользовательских функций на VBA.
Частые ошибки
- Ошибка #ЗНАЧ! (#VALUE!): Возникает, если в функцию передан недопустимый символ (например, буква "G" в шестнадцатеричном числе или пробел в строке).
- Ошибка #ЧИСЛО! (#NUM!): Число выходит за допустимый диапазон функции или указано слишком малое количество разрядов для отрицательного числа.
- Потеря ведущих нулей: При вводе двоичного числа как обычного числа (без кавычек и формата текста) Excel может убрать начальные нули. Всегда форматируйте ячейки с исходными данными как Текст или ставьте апостроф перед числом (
'00101).
FAQ
Можно ли перевести число из пятеричной системы счисления? Нет, стандартные функции поддерживают только основания 2, 8, 10 и 16. Для других систем (3, 5, 12 и т.д.) необходимо писать макрос на VBA или использовать формулы с степенями для ручного пересчета в десятичную систему.
Почему функция DEC2BIN возвращает ошибку для числа 1000? Потому что максимальное положительное число для этой функции — 511. Число 1000 требует более 10 бит, а функция ограничена 10 битами.
Как сделать буквы в шестнадцатеричном коде строчными?
Функции DEC2HEX и HEX2DEC по умолчанию возвращают заглавные буквы (A-F). Чтобы получить строчные, оберните формулу в функцию СТРОЧН (или LOWER): =СТРОЧН(DEC2HEX(255)) → ff.