Мені потрібен швидкий спосіб підрахунку кількості бітів у цілому цілому в python. Моє поточне рішення
bin(n).count("1")
але мені цікаво, чи існує якийсь швидший спосіб зробити це?
PS: (Я представляю великий двовимірний двійковий масив у вигляді єдиного списку чисел і роблю побітові операції, і це зводить час з годин на хвилини. Тепер я хотів би позбутися цих додаткових хвилин.
Редагувати: 1. він повинен бути в python 2.7 або 2.6
і оптимізація для невеликих чисел не має великого значення, оскільки це не було б чітким вузьким місцем, але у мене є цифри з 10 000 + бітами в деяких місцях
наприклад, це 2000-бітний випадок:
12448057941136394342297748548545082997815840357634948550739612798732309975923280685245876950055614362283769710705811182976142803324242407017104841062064840113262840137625582646683068904149296501029754654149991842951570880471230098259905004533869130509989042199261339990315125973721454059973605358766253998615919997174542922163484086066438120268185904663422979603026066685824578356173882166747093246377302371176167843247359636030248569148734824287739046916641832890744168385253915508446422276378715722482359321205673933317512861336054835392844676749610712462818600179225635467147870208L
int
? Хіба це не має свого методу для обчислення цього?
int.bit_length
має бути відповідь, а не та, яку прийнято нижче.