Maison > Article > développement back-end > Programme PHP pour compter les bits définis dans un nombre entier
Le code binaire est un système de représentation d'informations ou de données à l'aide d'un système numérique en base 2. Il utilise seulement deux chiffres, généralement 0 et 1, pour représenter toutes les valeurs. Chaque chiffre d'un code binaire est appelé un bit (abréviation de chiffre binaire).
En code binaire, chaque chiffre représente une puissance de 2. En partant du chiffre le plus à droite, les puissances de 2 augmentent de droite à gauche. Par exemple, dans un code binaire de 8 bits, le bit le plus à droite représente 2^0 (1), le bit suivant représente 2^1 (2), le suivant représente 2^2 (4), et ainsi de suite.
Prenons le nombre décimal 42 et représentons-le en code binaire. Pour convertir 42 en binaire, on le divise successivement par 2 et on garde une trace des restes jusqu'à ce que le quotient devienne nul.
Voici le processus étape par étape :
Étape 1
42 ÷ 2 = 21, reste 0
Étape 2
21 ÷ 2 = 10, reste 1
Étape 3
10 ÷ 2 = 5, reste 0
Étape 4
5 ÷ 2 = 2, reste 1
Étape 5
2 ÷ 2 = 1, reste 0
Étape 6
1 ÷ 2 = 0, reste 1
Pour obtenir la représentation binaire, on part du bas (dernier reste) et on lit les restes de bas en haut.
Le code binaire résultant pour 42 est : 101010
Ainsi, le nombre décimal 42 est représenté par 101010 en code binaire.
Dans le contexte du code binaire, un bit défini fait référence à un chiffre binaire (bit) défini sur la valeur 1. D'autre part, un bit clair fait référence à un chiffre binaire défini sur la valeur 0.
Exemple
Par exemple, dans le code binaire 101010, il y a trois bits définis (correspondant aux positions ayant une valeur de 1) et trois bits clairs (correspondant aux positions ayant une valeur de 0).
<?php // Function to get no of set // bits in binary representation // of positive integer n function countSetBits($n) { $count = 0; while ($n) { $count += $n & 1; $n >>= 1; } return $count; } // Driver Code $number= 12; echo "Number of setbits in $number: " .countSetBits($number); ?>
Number of setbits in 12: 2
<?php // PHP implementation of recursive // approach to find the number of // set bits in binary representation // of positive integer n // recursive function // to count set bits function countSetBits($n) { // base case if ($n == 0) return 0; else // if last bit set // add 1 else add 0 return ($n & 1) + countSetBits($n >> 1); } // Driver code // get value from user $n = 123; // function calling echo "Number of setbits in $n are: ".countSetBits($n); ?>
Number of setbits in 123 are: 6
En conclusion, nous pouvons compter les bits définis (1) dans un entier en utilisant à la fois une approche récursive et une boucle sur tous les bits en PHP. L’approche en boucle consiste à parcourir chaque bit de l’entier à l’aide d’une boucle while. Nous initialisons une variable de compteur et itérons jusqu'à ce que le nombre devienne 0. À l'intérieur de la boucle, nous utilisons AND au niveau du bit avec 1 pour vérifier le bit le moins significatif. S'il est égal à 1, on incrémente le compteur. Ensuite, nous décalons le nombre vers la droite de 1 bit. Ce processus se poursuit jusqu'à ce que tous les bits aient été vérifiés et que le décompte final soit renvoyé.
Pour l'approche récursive, nous pouvons définir une fonction récursive qui prend un entier en entrée. À l'intérieur de la fonction, nous vérifions le bit le moins significatif en utilisant l'opérateur ET au niveau du bit avec 1. S'il est égal à 1, nous incrémentons un compteur. Ensuite, nous décalons le numéro de 1 bit vers la droite et appelons récursivement la fonction avec le numéro mis à jour. Le cas de base est celui où le nombre devient 0, auquel cas nous renvoyons le compteur. Cette approche compte récursivement les bits définis jusqu'à ce que le nombre devienne 0. Les deux approches fournissent un moyen de compter les bits définis dans un nombre entier, permettant différents choix d'implémentation en fonction des besoins et préférences spécifiques du programmeur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!