Pythonで整数のビット数をカウントする高速な方法が必要です。私の現在の解決策は
bin(n).count("1")
しかし、これを行うより速い方法があるかどうか疑問に思っていますか?
PS:(私は大きな2Dバイナリ配列を数値の単一のリストとして表し、ビットごとの演算を行っています。これにより、時間を数時間から数分に短縮できます。次に、それらの余分な分を取り除きたいと思います。
編集:1. Python 2.7または2.6である必要があります
小さな数を最適化することはそれほど問題ではありません。ボトルネックになることは明らかではないためですが、一部の場所には10 000 +ビットの数値があります。
たとえば、これは2000ビットの場合です。
12448057941136394342297748548545082997815840357634948550739612798732309975923280685245876950055614362283769710705811182976142803324242407017104841062064840113262840137625582646683068904149296501029754654149991842951570880471230098259905004533869130509989042199261339990315125973721454059973605358766253998615919997174542922163484086066438120268185904663422979603026066685824578356173882166747093246377302371176167843247359636030248569148734824287739046916641832890744168385253915508446422276378715722482359321205673933317512861336054835392844676749610712462818600179225635467147870208L
int
か?これには独自の計算方法はありませんか?
int.bit_length
は答えであり、以下で受け入れられるものではありません。