Maison > développement back-end > tutoriel php > Explication détaillée des étapes de l'algorithme pour implémenter des statistiques sur le nombre de 1 dans un système binaire en utilisant PHP

Explication détaillée des étapes de l'algorithme pour implémenter des statistiques sur le nombre de 1 dans un système binaire en utilisant PHP

php中世界最好的语言
Libérer: 2023-03-26 21:48:02
original
1670 Les gens l'ont consulté

Cette fois, je vais vous apporter une explication détaillée des étapes de l'algorithme pour implémenter le comptage statistique du nombre de 1 dans un système binaire en PHP. Quelles sont les précautions pour implémenter l'algorithme statistique de. le nombre de 1 dans un système binaire en PHP Ce qui suit est un cas pratique. Levez-vous et jetez un œil.

Question

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

Idée de solution

Il s'agit d'une opération de bit question.
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 qu'il y en a 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

En cours d'exécution résultat :

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 prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Explication détaillée des étapes pour implémenter l'effet de pool de connexions MySQL en php

localhost ne peut pas être utilisé après que Win10 Apache ait configuré l'hôte virtuel Comment gérer

analyse des étapes d'utilisation de PHP CURL et Java http

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