KeeferJeremy Ответов: 1

Как проверить, является ли число силой?


Как проверить, является ли число степенью 2 или нет в C++?

Что я уже пробовал:

Возьмите log2 из N а затем передайте его в floor и ceil если оба дают один и тот же результат то N это степень 2

Patrice T

Покажи свой код.
и расскажите, в чем проблема.

1 Ответов

Рейтинг:
0

OriginalGriff

Предполагая, что это целочисленное значение, это довольно просто: подсчитайте количество битов "1" в этом числе. Если результат один, то это степень 2. Если это не так, то это не так.
Существуют различные способы сделать это: подход грубой силы и невежества, включающий цикл для количества битов в числе и операцию сдвига вправо, прост и эффективен.
А еще есть "умная" версия, которая намного, намного эффективнее: A C# реализация AI MEMO 239, пункт 169 - подсчитайте один бит в числе[^] Код написан на C#, но я думаю, что хорошо его объяснил.