Ich brauche einen schnellen Weg, um die Anzahl der Bits in einer Ganzzahl in Python zu zählen. Meine aktuelle Lösung ist
bin(n).count("1")
aber ich frage mich, ob es einen schnelleren Weg gibt, dies zu tun?
PS: (Ich stelle ein großes 2D-Binärarray als einzelne Liste von Zahlen dar und führe bitweise Operationen durch. Dadurch wird die Zeit von Stunden auf Minuten verkürzt. Jetzt möchte ich diese zusätzlichen Minuten loswerden.
Bearbeiten: 1. Es muss in Python 2.7 oder 2.6 sein
und die Optimierung für kleine Zahlen spielt keine große Rolle, da dies kein klarer Engpass wäre, aber ich habe an einigen Stellen Zahlen mit mehr als 10 000 Bits
Dies ist beispielsweise ein 2000-Bit-Fall:
12448057941136394342297748548545082997815840357634948550739612798732309975923280685245876950055614362283769710705811182976142803324242407017104841062064840113262840137625582646683068904149296501029754654149991842951570880471230098259905004533869130509989042199261339990315125973721454059973605358766253998615919997174542922163484086066438120268185904663422979603026066685824578356173882166747093246377302371176167843247359636030248569148734824287739046916641832890744168385253915508446422276378715722482359321205673933317512861336054835392844676749610712462818600179225635467147870208L
int
? Hat das nicht eine eigene Methode, um dies zu berechnen?
int.bit_length
sollte die Antwort sein und nicht die unten akzeptierte.