Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung der Algorithmusschritte zur Implementierung von Statistiken über die Anzahl der Einsen im Binärformat in PHP
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
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!