Python'da bir tamsayıdaki bit sayısını saymak için hızlı bir yola ihtiyacım var. Mevcut çözümüm
bin(n).count("1")
ama bunu yapmanın daha hızlı bir yolu olup olmadığını merak ediyorum?
Not: (Büyük bir 2D ikili diziyi tek bir sayı listesi olarak temsil ediyorum ve bitsel işlemler yapıyorum ve bu da zamanı saatlerden dakikalara indiriyor ve şimdi bu fazladan dakikalardan kurtulmak istiyorum.
Düzenleme: 1. python 2.7 veya 2.6'da olmalı
ve küçük sayılar için optimizasyon yapmak o kadar da önemli değil çünkü bu açık bir darboğaz olmayacaktır, ancak bazı yerlerde 10.000'den fazla bit olan sayılarım var
örneğin bu 2000 bitlik bir durumdur:
12448057941136394342297748548545082997815840357634948550739612798732309975923280685245876950055614362283769710705811182976142803324242407017104841062064840113262840137625582646683068904149296501029754654149991842951570880471230098259905004533869130509989042199261339990315125973721454059973605358766253998615919997174542922163484086066438120268185904663422979603026066685824578356173882166747093246377302371176167843247359636030248569148734824287739046916641832890744168385253915508446422276378715722482359321205673933317512861336054835392844676749610712462818600179225635467147870208L
int
? Bunu hesaplamak için kendi yöntemi yok mu?
int.bit_length
cevap olmalı ve aşağıda kabul edilen cevap olmamalıdır.