Код Middle Биты обновлено

Степень двойки

Условие

Является ли положительное число степенью двойки?

Примеры

isPowerOfTwo(1) // true
isPowerOfTwo(16) // true
isPowerOfTwo(3) // false

Как подойти

Приём n & (n − 1) убирает младший установленный бит. Если после этого остался ноль, бит был единственным. Проверка n > 0 обязательна: для нуля выражение тоже даёт ноль. Тот же приём считает единичные биты за число единиц, а не за разрядность.

Подсказки: 2
  1. У степени двойки ровно один единичный бит.
  2. Вычитание единицы превращает этот бит в ноль, а все младшие - в единицы.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.