Necesito una forma rápida de contar la cantidad de bits en un número entero en Python. Mi solución actual es
bin(n).count("1")
pero me pregunto si hay alguna forma más rápida de hacer esto.
PD: (estoy representando una gran matriz binaria 2D como una lista única de números y haciendo operaciones bit a bit, y eso reduce el tiempo de horas a minutos. Y ahora me gustaría deshacerme de esos minutos adicionales.
Editar: 1. tiene que estar en Python 2.7 o 2.6
y optimizar para números pequeños no importa mucho, ya que eso no sería un cuello de botella claro, pero tengo números con más de 10000 bits en algunos lugares
por ejemplo, este es un caso de 2000 bits:
12448057941136394342297748548545082997815840357634948550739612798732309975923280685245876950055614362283769710705811182976142803324242407017104841062064840113262840137625582646683068904149296501029754654149991842951570880471230098259905004533869130509989042199261339990315125973721454059973605358766253998615919997174542922163484086066438120268185904663422979603026066685824578356173882166747093246377302371176167843247359636030248569148734824287739046916641832890744168385253915508446422276378715722482359321205673933317512861336054835392844676749610712462818600179225635467147870208L
int
? ¿No tiene su propio método para calcular esto?
int.bit_length
lo contrario, debería ser la respuesta, y no la aceptada a continuación.