Bitzählalgorithmus (Brian Kernighan) in ganzzahliger Zeitkomplexität
Kann jemand erklären, warum Brian Kernighans Algorithmus O (log N) benötigt, um gesetzte Bits (1s) in einer ganzen Zahl zu zählen. Eine einfache Implementierung dieses Algorithmus finden Sie weiter unten (in JAVA).
int count_set_bits(int n){
int count = 0;
while(n != 0){
n &= (n-1);
count++;
}
return count;
}
Ich verstehe, wie es funktioniert, indem ich das Bit ganz rechts eins nach dem anderen lösche, bis es 0 wird, aber ich weiß nur nicht, wie wir O (log N) bekommen.