Когда требуется подсчитать количество не нулевых бит в числе, то следуют алгоритму: проверяют четность числа и смещают на каждой итерации на один разряд вправо, пока число не обратится в ноль. Есть и другой алгоритм, который обходится без цикла.
Вот пример первого алгоритма (работает в JS для чисел до Number.MAX_SAFE_INTEGER, т.е. 53 битного числа):
|
|
function bitCount (n) { let count = 0; while (n > 0) { if (n % 2 == 1) { count ++; n -- } n /= 2; } return count; } |
А это второй пример, работает для 32х разрядных чисел.
|
|
function bitCount (n) { n = n - ((n >> 1) & 0x55555555) n = (n & 0x33333333) + ((n >> 2) & 0x33333333) return ((n + (n >> 4) & 0xF0F0F0F) * 0x1010101) >> 24 } |
Данная запись опубликована в 09.05.2023 02:39 и размещена в рубрике javaScript.
Вы можете перейти в конец страницы и оставить ваш комментарий.
Мало букафф? Читайте есчо !
Май 4, 2020 г.
Немного ванильного js, на этот раз: как найти контейнер по указанному классу.
Сразу рассмотрим более сложный пример, когда требуется найти элемент с классом .class-child внутри элемента .class-parent.
В DOM мы используем функцию element.getElementsByClassName(CLASSNAME), ...
Читать
Январь 14, 2018 г.
Дочерние документы не могут самостоятельно читать данные из родительского фрейма, если тот находится на другом домене. Возможны исключения для под-доменов одного и того же доменного имени.
Все это связано с мерами безопасности и т.п. чепухи. :). Для ...
Читать
Февраль 19, 2020 г.
Шаблон для проверки состояния элемента input[type='checkbox']. Код проверяет отмечен элемент или нет.
[crayon-6ac0b88d4e759974008372/]
Проверка выполняется с помощью метода is(), который читает в данном случае не атрибуты тега input, а именно ...
Читать
Апрель 12, 2017 г.
Модальные окна - этот термин пришел из десктопных приложений. Класс модального окна отсутствует в чистом javascript, но развитие веб-приложений требует ...
Читать