Mögliche Duplizieren:
Best algorithm to count the number of set bits in a 32-bit integer?Anzahl der Nullen in der Binärdarstellung eines Integer
Bei einer 32-Bit-Ganzzahl N, einen Algorithmus entwickeln, um die Anzahl der Nullen in dem binären Bit zu finden, Darstellung von N.
der einfachste Algorithmus, den ich denken kann, ist die binäre Darstellung für Zeros, in C, so etwas zu überprüfen:
int num_of_zero(int num)
{
if(0 == num) return 1; /*For the input 0 it should output 1 */
int Count = 0;
while(num>0){
if(0 == (num&1)) Count++;
num >>= 1;
}
return Count;
}
Ich war wandern, wenn es einen Algorithmus gibt, um zu konstanter Zeit zu berechnen.
Für den Eingang sollte es 1 nicht 32 zurückgeben.
Für sollte der Ausgang 1 sein. Als binäre Darstellung ist .
Für der Ausgang 0.
genau sein soll, Suche nach einem besseren Algorithmus Anzahl (nichtvoreilender) Nullen in der binären Interpretation eines 32-Bit-integer.Hope das Problem zu berechnen, ist jetzt klar.
Bearbeiten: Wie Alex Martelli, Delroth wies ich meinen Code, um es lesbarer & mit Iteration dieses Mal ändern.
duplizieren Siehe http://stackoverflow.com/questions/109023/best-algorithm-to-count-the-number-of-set-bits-in -a-32-bit-integer – ChrisInEdmonton
num_of_zero (Anzahl >> 1); if (! (num & 1)) Count ++; können Sie das durchbrechen? Ich kann nicht sehen, wie das funktioniert. Fehle ich etwas Offensichtliches? – sjobe
Ist das ein Hausaufgabenproblem? –