Когда требуется подсчитать количество не нулевых бит в числе, то следуют алгоритму: проверяют четность числа и смещают на каждой итерации на один разряд вправо, пока число не обратится в ноль. Есть и другой алгоритм, который обходится без цикла.
Вот пример первого алгоритма (работает в 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.
Вы можете перейти в конец страницы и оставить ваш комментарий.
Мало букафф? Читайте есчо !
Апрель 7, 2025 г.
Плагин DataFilter позволяет управлять фильтрацией HTML тегов. Он является "родным" для CKE плагином, так что ничего дополнительно устанавливать не нужно. Рассмотрим как им можно управлять на уровне кастомного плагина.
Допустим, вы хотите разрешить ...
Читать
Январь 8, 2016 г.
Продемонстрирую алгоритм работы с полем radio для универсального случая, когда мы не знаем существует ли поле, одно у него значение в форме или оно может принимать значение из некоторого набора (случай списка из радио-кнопок).
На практике, часто ...
Читать
Июль 6, 2018 г.
Рассмотрим как программно установить позицию скролла документа ровно в начале нужного вам HTML контейнера.
Чтобы сделать переход плавно, можно использовать функцию jQuery().animate().
Суть процесса такова - вычисляем вертикальную позицию требуемого ...
Читать
Сентябрь 21, 2018 г.
Аналитика от гугла позволяет регистрировать произвольные (пользовательские) события и выводить по ним статистику. О том, как создать событие пишут многие, ...
Читать