Выбор ответа Middle Биты обновлено

Подсчёт единичных битов

Вопрос

Сколько итераций сделает цикл для n = 0b101100?

let n = 0b101100, count = 0;
while (n) {
  n &= n - 1;
  count++;
}

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 3. n &= n - 1 снимает младший единичный бит.

Варианты ответа

  1. 6
  2. 3правильный ответ
  3. 4
  4. 1

Разбор

n &= n - 1 снимает младший единичный бит. Единиц в числе три, значит три итерации. Это алгоритм Кернигана: O(число единиц), а не O(разрядность).

  • 6 это длина двоичной записи.
  • 4 и 1 не совпадают с числом единиц.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.