Когда требуется подсчитать количество не нулевых бит в числе, то следуют алгоритму: проверяют четность числа и смещают на каждой итерации на один разряд вправо, пока число не обратится в ноль. Есть и другой алгоритм, который обходится без цикла.
Вот пример первого алгоритма (работает в 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, 2023 г.
В MUI компонентах мне не хватало поддержки ввода с маской. Давайте подключим библиотеку imask к mui компоненту TextField для ликвидации этого пробела.
Установите в ваш проект библиотеку imask (https://imask.js.org/), и сам материал https://mui.com. ...
Читать
Сентябрь 7, 2018 г.
Возможно ли проверить загружен или нет определенный jQuery плагин? Нет ничего проще!
Самый краткий вариант проверки того, определен ли в текущий ...
Читать
Сентябрь 1, 2013 г.
Fancybox - известный плагин jQuery для создания эффекта "просмотра в окошке". Давайте подключим его в 6-ю версию Drupal.
Ряд "деятелей" предлагают поставить для этой цели, кроме самой библиотеки, ещё два плагина - jquery_update и fancybox. Определенный ...
Читать
Октябрь 25, 2023 г.
Попался мне UI баг, когда autocomplete слой с результатами поиска оказывался больше по ширине, чем input элемент, к которому он был прикреплен.
Не ясен был алгоритм, по которому вычислялась ширина слоя. В одних случаях это происходило корректно, ...
Читать