Когда требуется подсчитать количество не нулевых бит в числе, то следуют алгоритму: проверяют четность числа и смещают на каждой итерации на один разряд вправо, пока число не обратится в ноль. Есть и другой алгоритм, который обходится без цикла.
Вот пример первого алгоритма (работает в 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, 2013 г.
Эта задача из разряда useability. Drupal может штатно создавать блоки вертикальных иерархических меню.
Неудобным будет тот случай, когда мы хотим попасть на страницу в глубине иерархии этого меню. Нам придется последовательно заходить на родительские ...
Читать
Апрель 9, 2024 г.
Слайдер классный, а вот документация какая то вялая.
Сначала нужно найти DOM элемент, куда подключен slick, а потом получить объект слайдера, в котором можно прочитать множество свойств, в том числе и число слайдов:
[crayon-6a7758f6b747d047166099/]
Читать
Декабрь 26, 2012 г.
Ещё одна типовая задача, для которой найдено приличное решение. Типично суть задачи состоит в следующем. Есть набор изображений, которые демонстрируются поочередно в некотором контейнере. Ставится задача по анимации периодической смены этих картинок средствами ...
Читать
Ноябрь 22, 2019 г.
Специально для Артура, задающего вопрос в статье про swiper, привожу пример как вывести в swiper.js вместо штатных булетов навигации некие кастомные текстовые метки.
Swiper.js позволяет глубоко кастомизировать все свои элементы. Достаточно обратиться ...
Читать