Мне нужен быстрый способ подсчета количества бит в целом числе в Python. Мое текущее решение
bin(n).count("1")
но мне интересно, есть ли более быстрый способ сделать это?
PS: (я представляю большой двумерный двоичный массив как единый список чисел и выполняю побитовые операции, и это сокращает время с часов до минут. И теперь я хотел бы избавиться от этих лишних минут.
Изменить: 1. он должен быть в Python 2.7 или 2.6
и оптимизация для небольших чисел не имеет большого значения, поскольку это не будет явным узким местом, но у меня есть числа с более чем 10000 битами в некоторых местах
например, это 2000-битный случай:
12448057941136394342297748548545082997815840357634948550739612798732309975923280685245876950055614362283769710705811182976142803324242407017104841062064840113262840137625582646683068904149296501029754654149991842951570880471230098259905004533869130509989042199261339990315125973721454059973605358766253998615919997174542922163484086066438120268185904663422979603026066685824578356173882166747093246377302371176167843247359636030248569148734824287739046916641832890744168385253915508446422276378715722482359321205673933317512861336054835392844676749610712462818600179225635467147870208L
int
? Разве у этого нет собственного метода расчета этого?
int.bit_length
должен быть ответ, а не тот, который принят ниже.