Перевод чисел в двоичную систему в Excel
Чтобы перевести десятичное число в двоичную систему в Excel, используйте встроенную функцию =ДЕС.В.ДВ(число; [разряды]) (в английской версии =DEC2BIN). Она мгновенно преобразует целое число от -512 до 511 в двоичный код. Для массового перевода просто протяните формулу вниз по столбцу. Если требуется фиксированная длина результата (например, 8 бит), укажите второй аргумент функции.
Базовая функция конвертации
Основной инструмент для работы с системами счисления в Excel находится в категории «Инженерные». Функция автоматически выполняет деление на 2 и записывает остатки в обратном порядке.
Синтаксис функции:
=ДЕС.В.ДВ(число; [разряды])
- число — десятичное значение, которое нужно перевести.
- [разряды] — необязательный аргумент. Определяет количество знаков в результате. Используется для добавления ведущих нулей.
Важно: Без указания второго аргумента функция убирает незначащие нули слева. Например, число 5 превратится в 101, а не в 00000101.
Примеры использования
| Десятичное число | Формула | Результат | Пояснение |
|---|---|---|---|
| 10 | =ДЕС.В.ДВ(10) | 1010 | Стандартный вывод |
| 10 | =ДЕС.В.ДВ(10; 8) | 00001010 | Фиксировано 8 бит (байт) |
| 255 | =ДЕС.В.ДВ(255; 8) | 11111111 | Максимальное значение байта |
| 1 | =ДЕС.В.ДВ(1; 5) | 00001 | Добавлены ведущие нули |
Работа с отрицательными числами
Excel поддерживает перевод отрицательных чисел, используя дополнительный код (two’s complement). Однако диапазон значений строго ограничен.
- Допустимый диапазон для отрицательных чисел: от -512 до -1.
- Результат всегда состоит из 10 бит.
- Аргумент
[разряды]игнорируется при работе с отрицательными числами.
Пример:
Формула =ДЕС.В.ДВ(-1) вернет результат 1111111111 (десять единиц). Попытка перевести число меньше -512 вызовет ошибку #ЧИСЛО!.
Ограничение функции: Стандартная формула работает только с целыми числами в диапазоне от -512 до 511. Дробные числа (например, 10.5) необходимо предварительно округлить функцией ОКРУГЛ или ЦЕЛОЕ, иначе вы получите ошибку.
Массовая обработка данных
Для перевода целого столбца чисел нет необходимости писать формулу для каждой ячейки вручную.
- Введите исходные данные в столбец A (начиная с A2).
- В ячейку B2 вставьте формулу:
=ДЕС.В.ДВ(A2). - Наведите курсор на правый нижний угол ячейки B2 (появится черный крестик).
- Дважды кликните или протяните маркер заполнения вниз до конца списка.
Если в столбце могут встречаться пустые ячейки или текст, оберните формулу в обработку ошибок, чтобы избежать символов #ЗНАЧ!:
=ЕСЛИОШИБКА(ДЕС.В.ДВ(A2); "")
(Для английской версии: =IFERROR(DEC2BIN(A2), ""))
Что делать, если число больше 511?
Стандартная функция имеет жесткое ограничение в 511 (9 бит + знаковый). Если вам нужно перевести большее число (например, 1000 или 65535), стандартная формула выдаст ошибку.
Решение для больших чисел: Используйте комбинацию математических функций для ручного расчета остатков, либо примените форматирование текста, если точность не критична, но для программистских задач лучше использовать надстройки или VBA.
Простой способ получить двоичную строку для положительных чисел до 2^16 без ограничений инженерной функции — использовать пользовательскую функцию (UDF) на VBA:
- Нажмите
Alt + F11, вставьте новый модуль. - Вставьте код:
Function DecToBinLarge(ByVal n As Long) As String
If n < 0 Then Err.Raise 6
Do While n > 0
DecToBinLarge = (n Mod 2) & DecToBinLarge
n = n \ 2
Loop
If DecToBinLarge = "" Then DecToBinLarge = "0"
End Function
```
3. Теперь в ячейке можно писать `=DecToBinLarge(A2)` для любых положительных чисел.
## Частые ошибки
* **#ЧИСЛО! (NUM!)**: Возникает, если число меньше -512 или больше 511. Также появляется, если запрошенное количество разрядов недостаточно для отображения числа (например, попытка записать 255 в 7 бит).
* **#ЗНАЧ! (VALUE!)**: Появляется, если в качестве аргумента передан текст, не являющийся числом, или дробное число без предварительного округления.
* **Лишние пробелы**: Если данные импортированы из другой системы, убедитесь, что в ячейках нет скрытых пробелов (используйте функцию `СЖПРОБЕЛЫ`).
## FAQ
**Можно ли перевести двоичное число обратно в десятичное?**
Да, используйте обратную функцию `=ДВ.В.ДЕС(текст)` (в английской версии `=BIN2DEC`). Она принимает строку из 0 и 1 и возвращает число.
**Как сделать так, чтобы двоичный код всегда был длиной 8 символов?**
Используйте второй аргумент функции: `=ДЕС.В.ДВ(A1; 8)`. Если число слишком велико для 8 бит (больше 255), функция выдаст ошибку.
**Почему функция не работает в моем Excel?**
Убедитесь, что установлен пакет анализа (в старых версиях). В современных версиях Excel (2016, 2019, 365) инженерные функции доступны по умолчанию. Проверьте разделитель аргументов: в русской локали это точка с запятой `;`, в английской — запятая `,`.