decbin()
Découvrez la fonction decbin() en PHP, qui permet de convertir un nombre décimal en nombre binaire.
La fonction decbin() convertit un entier décimal (base 10) en sa représentation binaire (base 2) et la retourne sous forme de string. Elle est le pendant de bindec(), qui effectue la conversion inverse. Cette page couvre la syntaxe, la valeur de retour, les pièges liés aux nombres négatifs et la mise en forme du résultat.
Syntaxe
decbin(int $num): string$num— l'entier décimal à convertir. Les flottants sont silencieusement tronqués en entiers, et les boolean sont convertis (truedevient1).- Valeur de retour — une string composée de caractères
0et1. Notez qu'il s'agit d'une string, pas d'un nombre : aucun zéro de tête n'est donc produit et le résultat peut être concaténé ou complété sans risque.
Exemple de base
On assigne une valeur décimale, on la passe à decbin() et on affiche la string retournée. Le décimal 10 donne 1010 en binaire (8 + 2).
Conversion de plusieurs valeurs
Comme la fonction retourne une simple string, vous pouvez la formater directement. Voici quelques conversions courantes :
<?php
echo decbin(0); // 0
echo "\n";
echo decbin(1); // 1
echo "\n";
echo decbin(255); // 11111111
echo "\n";
echo decbin(256); // 100000000
?>255 est la valeur maximale tenant sur un octet, c'est pourquoi elle correspond à huit bits à 1.
Compléter la sortie à une largeur fixe
decbin() n'ajoute jamais de zéros de tête : decbin(5) retourne "101", pas "00000101". Pour obtenir une largeur de bits fixe (par exemple, afficher chaque valeur sur un octet), utilisez str_pad() :
<?php
$value = 5;
// Pad to 8 bits with leading zeros
echo str_pad(decbin($value), 8, "0", STR_PAD_LEFT); // 00000101
?>Cela fonctionne précisément parce que la valeur de retour est une string.
Nombres négatifs
PHP ne gère pas de bit de signe dédié ici : un entier négatif est interprété comme une valeur non signée en complément à deux sur la largeur d'entier de la plateforme. Sur un système 64 bits, decbin(-1) retourne 64 uns :
<?php
echo decbin(-1);
// 1111111111111111111111111111111111111111111111111111111111111111
?>Si vous avez besoin d'une largeur fixe et prévisible, masquez d'abord la valeur — par exemple decbin(-1 & 0xFF) donne 11111111 (vue sur 8 bits).
Aller-retour avec bindec()
decbin() et bindec() sont des fonctions inverses : convertir un nombre en binaire puis le reconvertir redonne la valeur d'origine :
<?php
$n = 42;
$binary = decbin($n); // "101010"
$back = bindec($binary); // 42
echo $back; // 42
?>Quand l'utiliser ?
- Inspecter ou afficher des motifs de bits lors du débogage d'opérations bit à bit (
&,|,^,<<,>>). - Construire des représentations binaires sous forme de string à des fins pédagogiques, de journalisation ou d'encodage simple de données.
- Travailler avec des masques de bits de permissions/drapeaux où visualiser les bits individuels est utile.
Fonctions associées
PHP propose une famille de fonctions de conversion de base. Choisissez celle qui correspond à votre base source et cible :
bindec()— string binaire vers décimal.dechex()— décimal vers hexadécimal.hexdec()— hexadécimal vers décimal.decoct()— décimal vers octal.octdec()— octal vers décimal.base_convert()— conversion entre bases arbitraires (2–36).
Conclusion
La fonction decbin() transforme un entier décimal en string binaire. Retenez trois points : le résultat est une string (utilisez donc str_pad() pour les largeurs fixes), les nombres négatifs sont affichés en complément à deux sur toute la largeur de l'entier, et bindec() effectue la conversion inverse.