ฉันต้องการวิธีที่รวดเร็วในการนับจำนวนบิตเป็นจำนวนเต็มใน python วิธีแก้ปัญหาปัจจุบันของฉันคือ
bin(n).count("1")
แต่ฉันสงสัยว่ามีวิธีไหนที่เร็วกว่านี้ไหม
PS: (ฉันเป็นตัวแทนของอาร์เรย์ไบนารี 2D ขนาดใหญ่เป็นรายการตัวเลขเดียวและทำการดำเนินการแบบบิตและนั่นทำให้เวลาลดลงจากชั่วโมงเป็นนาทีและตอนนี้ฉันต้องการกำจัดนาทีพิเศษเหล่านั้น
แก้ไข: 1. ต้องอยู่ใน python 2.7 หรือ 2.6
และการเพิ่มประสิทธิภาพสำหรับตัวเลขขนาดเล็กไม่ได้มีความสำคัญมากนักเนื่องจากนั่นจะไม่ใช่ปัญหาคอขวดที่ชัดเจน แต่ฉันมีตัวเลข 10,000 + บิตในบางที่
ตัวอย่างเช่นนี่เป็นกรณี 2,000 บิต:
12448057941136394342297748548545082997815840357634948550739612798732309975923280685245876950055614362283769710705811182976142803324242407017104841062064840113262840137625582646683068904149296501029754654149991842951570880471230098259905004533869130509989042199261339990315125973721454059973605358766253998615919997174542922163484086066438120268185904663422979603026066685824578356173882166747093246377302371176167843247359636030248569148734824287739046916641832890744168385253915508446422276378715722482359321205673933317512861336054835392844676749610712462818600179225635467147870208L
int
? ไม่มีวิธีการคำนวณของตัวเองหรือไม่?
int.bit_length
ควรเป็นคำตอบไม่ใช่คำตอบที่ยอมรับด้านล่าง