Функция, которую Вы ищете, часто вызывается "поперечная сумма" или "количество населения" двоичного числа. Knuth обсуждает его в предварительной грозди 1 А, pp11-12 (хотя была краткая ссылка в Объеме 2, 4.6.3-(7).)
местоположение classicus является статьей "A Technique for Counting Ones in a Binary Computer" Peter Wegner, от Связь ACM, Объем 3 (1960) Номер 5, страница 322 . Он дает два различных алгоритма там, один оптимизированный для чисел ожидал быть "редким" (т.е. иметь небольшое количество) и один для противоположного случая.
Вы случайно не используете jquery и прототип на одной странице?
Если да, используйте режим jquery noConflict, иначе вы перезаписываете прототипы $ function.
Режим noConflict активирован выполнив следующие действия:
<script src="jquery.js"></script>
<script>jQuery.noConflict();</script>
Примечание: при этом переменная знака доллара больше не представляет объект jQuery. Чтобы не переписывать весь код jQuery, вы можете использовать этот небольшой трюк, чтобы создать область видимости знака доллара для jQuery:
jQuery(function ($) {
// The dollar sign will equal jQuery in this scope
});
// Out here, the dollar sign still equals Prototype