Heim > Backend-Entwicklung > PHP-Tutorial > PHP-Interviewfrage (berechne die Anzahl der Einsen in einer Dezimalzahl, nachdem du sie in eine Binärzahl konvertiert hast)

PHP-Interviewfrage (berechne die Anzahl der Einsen in einer Dezimalzahl, nachdem du sie in eine Binärzahl konvertiert hast)

WBOY
Freigeben: 2016-08-08 09:22:42
Original
1016 Leute haben es durchsucht



Dies ist eine Interviewfrage, die mir gestern während eines Interviews begegnet ist.

Auf den ersten Blick scheint es einfach, aber im Detail lässt es sich nicht realisieren.

Als ich nach Hause kam, suchte ich auf Baidu und fand eine Antwort.

lautet wie folgt:

//计算一个十进制数转换为二进制数中‘1’的个数
 //例如十进制11 = 二进制1011,则结果是3个1
 
    //解题思路:利用 n & (n - 1) 可以将最后一个1变0
   //xxxx1000 & (xxxx1000 - 1) = xxxx1000 & xxxx0111 = xxxx0000
   // 1011 & (1011 - 1) = 1011 & 1010 = 1010
   //直到最后一个1被与为0,得出结果
 function count1($n) {
        $r = 0;
        while ($n != 0) {
             $r++;
             $n &= ($n - 1);
         }
 
        return $r;
    }
 
     echo count1(11); 
Nach dem Login kopieren

Nachdem ich es gelesen hatte, hatte ich das Gefühl, dass es nicht leicht zu verstehen ist (ich bin nicht gut in Bitoperationen ...)

Ich habe eine Weile darüber nachgedacht und es gibt die folgende Lösung:

function count1($n) {
   $r = 0; 
	while($n !=0)
	{ 	
		
		if(($n%2) !=0 )
		{
			$r++;
		}
         $n=$n/2;
    }
	
	return $r;
}
    echo count1(8);
Nach dem Login kopieren

Das sollte viel einfacher zu verstehen sein.


Das Obige führt eine PHP-Interviewfrage ein (Berechnung der Anzahl der Einsen in einer Dezimalzahl nach der Konvertierung in eine Binärzahl), einschließlich relevanter Inhalte. Ich hoffe, dass sie für Freunde, die an PHP-Tutorials interessiert sind, hilfreich sein wird.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage