Выбор ответа Middle Биты обновлено
Подсчёт единичных битов
Вопрос
Сколько итераций сделает цикл для n = 0b101100?
let n = 0b101100, count = 0;
while (n) {
n &= n - 1;
count++;
}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 3. n &= n - 1 снимает младший единичный бит.
Варианты ответа
- 6
- 3правильный ответ
- 4
- 1
Разбор
n &= n - 1 снимает младший единичный бит. Единиц в числе три, значит три итерации. Это алгоритм Кернигана: O(число единиц), а не O(разрядность).
- 6 это длина двоичной записи.
- 4 и 1 не совпадают с числом единиц.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.