Preciso de uma maneira rápida de contar o número de bits em um número inteiro em python. Minha solução atual é
bin(n).count("1")
mas estou me perguntando se existe alguma maneira mais rápida de fazer isso?
PS: (estou representando uma grande matriz binária 2D como uma única lista de números e fazendo operações bit a bit, o que reduz o tempo de horas para minutos. Agora, gostaria de me livrar desses minutos extras.
Editar: 1. tem que estar em python 2.7 ou 2.6
e otimizar para pequenos números não importa muito, pois isso não seria um gargalo claro, mas eu tenho números com mais de 10.000 bits em alguns lugares
por exemplo, este é um caso de 2.000 bits:
12448057941136394342297748548545082997815840357634948550739612798732309975923280685245876950055614362283769710705811182976142803324242407017104841062064840113262840137625582646683068904149296501029754654149991842951570880471230098259905004533869130509989042199261339990315125973721454059973605358766253998615919997174542922163484086066438120268185904663422979603026066685824578356173882166747093246377302371176167843247359636030248569148734824287739046916641832890744168385253915508446422276378715722482359321205673933317512861336054835392844676749610712462818600179225635467147870208L
int
? Isso não tem seu próprio método para calcular isso?
int.bit_length
deve ser a resposta, e não a aceita abaixo.