Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Algorithmusschritte zur Implementierung von Statistiken über die Anzahl der Einsen im Binärformat in PHP

Detaillierte Erläuterung der Algorithmusschritte zur Implementierung von Statistiken über die Anzahl der Einsen im Binärformat in PHP

php中世界最好的语言
php中世界最好的语言Original
2018-05-19 14:16:121667Durchsuche

Dieses Mal werde ich Ihnen eine detaillierte Erklärung der Schritte des Algorithmus zur Implementierung der statistischen Zählung der Anzahl von Einsen in einem Binärsystem in PHP geben. Was sind die Vorsichtsmaßnahmen für die Implementierung des statistischen Algorithmus von Die Anzahl der Einsen in einem Binärsystem in PHP. Das Folgende ist ein praktischer Fall.

Frage

Geben Sie eine dezimale Ganzzahl ein und geben Sie die Anzahl der Einsen in der binären Darstellung der Zahl aus. Negative Zahlen werden im Zweierkomplement ausgedrückt.

Lösungsidee

Dies ist eine Bit-Operation-Frage.
Lösung 1: Sie können die bitweise UND-Verknüpfung verwenden, um die Zahl 1 zu ermitteln, indem Sie jedes Bit und 1 UND-verknüpfen.
Lösung 2 (optimale Lösung): Eine clevere Methode, die nicht 0 ist, muss mindestens ein Bit haben, das 1 ist. Wenn diese Zahl um eins reduziert wird, wird das letzte Bit von 1 zu 0. Alle folgenden 0er werden in 1er geändert. Beispielsweise wird 10100 nach der Subtraktion von eins zu 10011. Nach der UND-Verknüpfung der ursprünglichen Zahlen 10100 und 10011 erhalten Sie 10000. Das heißt, durch diese Operation können Sie eine 1 in eine 0 ändern, also wie oft kann eine Binärzahl geändert werden Zahl macht das? Es gibt so viele Operationen wie 1.

Implementierungscode

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

Laufendes Ergebnis:

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website.

Empfohlene Lektüre:

Detaillierte Erläuterung der Schritte zum Implementieren des MySQL-Verbindungspooleffekts in PHP

localhost kann nicht sein Wird verwendet, nachdem Win10 Apache den virtuellen Host konfiguriert hat. Umgang mit

Analyse der PHP-CURL- und Java-HTTP-Nutzungsschritte

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Algorithmusschritte zur Implementierung von Statistiken über die Anzahl der Einsen im Binärformat in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn