Когда требуется подсчитать количество не нулевых бит в числе, то следуют алгоритму: проверяют четность числа и смещают на каждой итерации на один разряд вправо, пока число не обратится в ноль. Есть и другой алгоритм, который обходится без цикла.
Вот пример первого алгоритма (работает в 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.
Вы можете перейти в конец страницы и оставить ваш комментарий.
Мало букафф? Читайте есчо !
Апрель 28, 2016 г.
Pull-down - выпадающим меню, работающим на javascript, никого не удивить. Мне не нравится, что оно закрывается мгновенно, как курсор мыши выходит за край выпавшей секции. Немного промахнешься (особенно это часто случается с последними пунктами), и меню ...
Читать
Июнь 13, 2018 г.
На мобильных устройствах с сенсорным экраном обычно нет такого элемента ввода информации как мышь и соответствующих событий - mousewheel. Все манипуляции производится касаниями к экрану.
Листая касанием одного пальца, вы прокручиваете веб-страницу, ...
Читать
Сентябрь 19, 2018 г.
JavaScript в web был когда то всего лишь приятным дополнением. А сейчас сложно найти сайт, который не использует скрипты.
А если уж часть шаблона формируется скриптом, то без много-строчных констант не обойтись. Но в javascript с ними не так все ...
Читать
Декабрь 8, 2012 г.
Обычно, "проблема" возникает с данными, получаемыми через асинхронные запросы (ajax-запрос). Вы пытаетесь выполнить jQuery.find() для полученных данных, а функция возвращает пустой объект.
В примере ниже, мы пытаемся извлечь содержимое HTML контейнера ...
Читать