Dans la programmation PHP, lors du traitement des données binaires, il est souvent nécessaire de déterminer si un binaire binaire est 1. PHP fournit deux fonctions très pratiques: Bindec () et DeCbin () , qui sont utilisées respectivement à la décimale et décimales en binaire. Cet article présentera comment combiner ces deux fonctions pour déterminer si un certain binaire est 1.
bindec (String $ binary_string): int
Convertit une chaîne binaire en entier décimal correspondant.
decbin (int $ décimal): chaîne
Convertissez les entiers décimaux en chaîne binaire correspondante.
Par exemple:
echo bindec("101"); // Sortir 5
echo decbin(5); // Sortir "101"
Supposons que nous ayons un numéro décimal et que nous voulons dire si le bit $ POS (compté de droite à gauche, en comptant à partir de 0) dans sa représentation binaire est 1. L'idée de mise en œuvre est la suivante:
Convertit un nombre en une chaîne binaire.
Calculez l'index du bit cible en fonction de la longueur de chaîne.
Vérifiez si le caractère bit est «1» .
<?php
function isBitSet($decimalNumber, $pos) {
// Convertir la décimale en chaîne binaire
$binaryString = decbin($decimalNumber);
// Calculez l'index de ce bit dans la chaîne,Une ficelle binaire est de gauche à droite à haut à bas
$index = strlen($binaryString) - 1 - $pos;
// Si l'indice est inférieur à0,Indique que ce bit est hors de portée,Retour par défautfalse
if ($index < 0) {
return false;
}
// Déterminer si le bit correspondant est '1'
return $binaryString[$index] === '1';
}
// test
$number = 13; // Le binaire est1101
$position = 2; // De la droite2Peu,0Index de base,En binaire, c'est1
if (isBitSet($number, $position)) {
echo "1 et 1 {$position} Peu是1";
} else {
echo "1 et 1 {$position} Peu不是1";
}
?>
Sortir:
1 et 1 2 Peu是1
Le nombre de chiffres est compté de droite à gauche et le chiffre le plus bas est 0.
Lorsque vous utilisez decbin () pour convertir un nombre décimal en une chaîne binaire, la longueur de la chaîne peut être inférieure au nombre de bits attendu, et les bits dépassant la longueur sont considérés par défaut.
Si vous souhaitez juger plusieurs bits, vous pouvez combiner des boucles ou des opérations de bits.
Bien que l'utilisation de decbin () et de l'index de chaîne puisse atteindre des fonctions, l'efficacité de l'opération de bit est plus élevée et la méthode d'écriture est plus simple:
function isBitSetBitwise($number, $pos) {
return (($number >> $pos) & 1) === 1;
}
Vous pouvez également utiliser la fonction ci-dessus pour déterminer si un certain bit est 1.
Cet article présente comment utiliser les fonctions Bindec () et decbin () de PHP pour déterminer si un certain binaire est 1. Il est très utile pour l'apprentissage simple et la compréhension du traitement binaire, mais dans les projets réels, il est recommandé d'utiliser des opérations de bits pour améliorer les performances et la lisibilité au code.