W3docs

decbin()

Функция decbin() в PHP преобразует десятичное целое число в двоичное представление и возвращает его в виде строки.

Функция decbin() преобразует десятичное (основание 10) целое число в его двоичное (основание 2) представление и возвращает результат как string. Она является парой функции bindec(), которая выполняет обратное преобразование. На этой странице рассмотрены синтаксис, возвращаемое значение, нюансы работы с отрицательными числами и форматирование вывода.

Синтаксис

decbin(int $num): string
  • $num — десятичное целое число для преобразования. Числа с плавающей точкой молча усекаются до целых, а boolean-значения приводятся (true становится 1).
  • Возвращаемое значение — string из символов 0 и 1. Обратите внимание, что результат — это string, а не число, поэтому ведущие нули никогда не добавляются, и результат можно безопасно конкатенировать или дополнять.

Базовый пример

php— editable, runs on the server

Мы присваиваем десятичное значение, передаём его в 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() выполняет обратное преобразование.

Практика

Практика
Для чего используется функция decbin() в PHP?
Для чего используется функция decbin() в PHP?
Was this page helpful?