Tôi cần một cách nhanh chóng để đếm số bit trong một số nguyên trong python. Giải pháp hiện tại của tôi là
bin(n).count("1")
nhưng tôi đang tự hỏi nếu có cách nào nhanh hơn để làm điều này?
Tái bút: (Tôi đang đại diện cho một mảng nhị phân 2D lớn dưới dạng một danh sách các số duy nhất và thực hiện các phép toán bit, và điều đó làm giảm thời gian từ hàng giờ xuống còn phút. Và bây giờ tôi muốn loại bỏ những phút thừa đó.
Chỉnh sửa: 1. nó phải ở trong python 2.7 hoặc 2.6
và tối ưu hóa cho các số nhỏ không quan trọng lắm vì đó sẽ không phải là một nút cổ chai rõ ràng, nhưng tôi có những con số với 10 000 + bit ở một số nơi
ví dụ đây là trường hợp 2000 bit:
12448057941136394342297748548545082997815840357634948550739612798732309975923280685245876950055614362283769710705811182976142803324242407017104841062064840113262840137625582646683068904149296501029754654149991842951570880471230098259905004533869130509989042199261339990315125973721454059973605358766253998615919997174542922163484086066438120268185904663422979603026066685824578356173882166747093246377302371176167843247359636030248569148734824287739046916641832890744168385253915508446422276378715722482359321205673933317512861336054835392844676749610712462818600179225635467147870208L
int
? Điều đó không có phương pháp riêng để tính toán điều này?
int.bit_length
sẽ là câu trả lời, và không phải là câu được chấp nhận dưới đây.