Maison > développement back-end > tutoriel php > Comment compter les algorithmes binaires en php

Comment compter les algorithmes binaires en php

php中世界最好的语言
Libérer: 2023-03-23 14:56:02
original
2028 Les gens l'ont consulté

Cette fois, je vais vous montrer comment compter les algorithmes binaires en PHP. Quelles sont les précautions pour que PHP compte les algorithmes binaires. Voici des cas pratiques, jetons un oeil.

Comment implémenter l'algorithme de comptage du nombre 1 en binaire en PHP ? Cet article vous présente l'exemple de code PHP pour implémenter l'algorithme statistique du nombre 1 en binaire Venez jeter un œil.

Question

Saisissez un nombre décimal entier et affichez le nombre de 1 dans la représentation binaire de ce nombre. Les nombres négatifs sont exprimés en complément à deux.

Idées de solutions

Il s'agit d'une question sur les opérations sur les bits.
Solution 1 : Vous pouvez utiliser l'opération ET au niveau du bit pour trouver le nombre de 1 en exécutant l'opération AND sur chaque bit avec 1.
Solution 2 (solution optimale) : Une méthode astucieuse. Un nombre binaire qui n'est pas 0 doit avoir au moins un chiffre qui vaut 1. Lorsque ce nombre est réduit de un, son dernier chiffre, 1, deviendra 0. Tous les 0 suivants seront remplacés par des 1. Par exemple, 10100 deviendra 10011 après en avoir soustrait un. Ensuite, après avoir combiné les nombres d'origine 10100 et 10011, vous obtiendrez 10000. Autrement dit, grâce à cette opération, vous pouvez changer un 1 en un 0, donc combien de fois un binaire peut-il le faire. numéro faire ça ? Il y a autant d'opérations que 1.

Code d'implémentation

//解法一
function NumberOf1($n)
{
 $count = 0;
  $flag = 1;
  while ($flag != 0) {
   if (($n & $flag) != 0) {
    $count++;
   }
   $flag = $flag << 1;
  }
  return $count;
}
Copier après la connexion
// 解法二
function NumberOf1($n)
{
 $count = 0;
 if($n < 0){ // 处理负数
   $n = $n&0x7FFFFFFF;
   ++$count;
 }
 while($n != 0){
  $count++;
  $n = $n & ($n-1);
 }
 return $count;
}
Copier après la connexion
//测试
$num=45;
echo $num."的二进制是".decbin($num)."<br/>";
echo $num."共有".NumberOf1($num)."个1";
Copier après la connexion

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez. faites attention aux autres sujets connexes dans l'article du site Web chinois php !

Lecture recommandée :

Explication détaillée de l'utilisation des fonctions de rappel en PHP

Comment utiliser la fonction file_put_contents dans PHP

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal