Ho bisogno di un modo veloce per contare il numero di bit in un numero intero in Python. La mia soluzione attuale è
bin(n).count("1")
ma mi chiedo se esiste un modo più veloce per farlo?
PS: (sto rappresentando un grande array binario 2D come un unico elenco di numeri e sto eseguendo operazioni bit per bit, e questo riduce il tempo da ore a minuti. E ora vorrei sbarazzarmi di quei minuti extra.
Modifica: 1. deve essere in Python 2.7 o 2.6
e l'ottimizzazione per numeri piccoli non ha molta importanza poiché non sarebbe un chiaro collo di bottiglia, ma in alcuni punti ho numeri con più di 10.000 bit
ad esempio questo è un caso a 2000 bit:
12448057941136394342297748548545082997815840357634948550739612798732309975923280685245876950055614362283769710705811182976142803324242407017104841062064840113262840137625582646683068904149296501029754654149991842951570880471230098259905004533869130509989042199261339990315125973721454059973605358766253998615919997174542922163484086066438120268185904663422979603026066685824578356173882166747093246377302371176167843247359636030248569148734824287739046916641832890744168385253915508446422276378715722482359321205673933317512861336054835392844676749610712462818600179225635467147870208L
int
? Questo non ha un proprio metodo per calcolarlo?
int.bit_length
dovrebbe essere la risposta, e non quella accettata di seguito.