decbin()
Функция decbin() в PHP преобразует десятичное целое число в двоичное представление и возвращает его в виде строки.
Функция decbin() преобразует десятичное (основание 10) целое число в его двоичное (основание 2) представление и возвращает результат как string. Она является парой функции bindec(), которая выполняет обратное преобразование. На этой странице рассмотрены синтаксис, возвращаемое значение, нюансы работы с отрицательными числами и форматирование вывода.
Синтаксис
decbin(int $num): string$num— десятичное целое число для преобразования. Числа с плавающей точкой молча усекаются до целых, а boolean-значения приводятся (trueстановится1).- Возвращаемое значение — string из символов
0и1. Обратите внимание, что результат — это string, а не число, поэтому ведущие нули никогда не добавляются, и результат можно безопасно конкатенировать или дополнять.
Базовый пример
Мы присваиваем десятичное значение, передаём его в decbin() и выводим возвращённую string. Десятичное 10 — это 1010 в двоичном представлении (8 + 2).
Преобразование нескольких значений
Поскольку функция возвращает обычную string, её можно форматировать непосредственно. Вот несколько распространённых преобразований:
<?php
echo decbin(0); // 0
echo "\n";
echo decbin(1); // 1
echo "\n";
echo decbin(255); // 11111111
echo "\n";
echo decbin(256); // 100000000
?>255 — наибольшее значение, умещающееся в одном байте, поэтому оно отображается как восемь единичных битов.
Дополнение вывода до фиксированной ширины
decbin() никогда не добавляет ведущие нули: decbin(5) возвращает "101", а не "00000101". Если нужна фиксированная ширина в битах (например, для отображения каждого значения как байта), оберните результат в str_pad():
<?php
$value = 5;
// Pad to 8 bits with leading zeros
echo str_pad(decbin($value), 8, "0", STR_PAD_LEFT); // 00000101
?>Это работает именно потому, что возвращаемое значение является string.
Отрицательные числа
PHP не имеет специальной обработки знакового бита: отрицательное целое число интерпретируется как беззнаковое значение в дополнительном коде (two's-complement) на основе разрядности целых чисел платформы. На 64-битных системах decbin(-1) возвращает 64 единицы:
<?php
echo decbin(-1);
// 1111111111111111111111111111111111111111111111111111111111111111
?>Если нужна фиксированная предсказуемая ширина, сначала применяйте маску — например, decbin(-1 & 0xFF) даёт 11111111 (8-битное представление).
Обратное преобразование через bindec()
decbin() и bindec() являются обратными функциями, поэтому преобразование числа в двоичный вид и обратно возвращает исходное значение:
<?php
$n = 42;
$binary = decbin($n); // "101010"
$back = bindec($binary); // 42
echo $back; // 42
?>Когда это используется?
- Просмотр и отображение битовых паттернов при отладке побитовых операций (
&,|,^,<<,>>). - Построение двоичных string-представлений для обучения, логирования или простого кодирования данных.
- Работа с битовыми масками прав и флагов, где важна видимость отдельных битов.
Связанные функции
PHP содержит семейство вспомогательных функций для конвертации оснований. Выберите ту, которая соответствует исходному и целевому основанию:
bindec()— двоичная string в десятичное число.dechex()— десятичное в шестнадцатеричное.hexdec()— шестнадцатеричное в десятичное.decoct()— десятичное в восьмеричное.octdec()— восьмеричное в десятичное.base_convert()— конвертация между произвольными основаниями (2–36).
Заключение
Функция decbin() преобразует десятичное целое число в двоичную string. Запомните три вещи: результат — это string (используйте str_pad() для фиксированной ширины), отрицательные числа отображаются в дополнительном коде на всю разрядность целого числа, а bindec() выполняет обратное преобразование.