Рубрики

Программа PHP, чтобы найти, является ли нет сила двух

Получив положительное целое число, напишите функцию, чтобы определить, является ли она степенью двойки или нет.

Примеры :

Input : n = 4
Output : Yes
22 = 4

Input : n = 7
Output : No

Input : n = 32
Output : Yes
25 = 32

1. Простой метод для этого — просто взять журнал числа на основе 2, и если вы получите целое число, то число будет степенью 2.

PHP

<?php
// PHP программа для поиска
// есть ли нет
// сила двух

  
// Функция для проверки
// Журнал базы 2

function Log2($x)

{

    return (log10($x) / 

            log10(2));

}

  

  
// Функция для проверки
// если х - степень 2

function isPowerOfTwo($n)

{

    return (ceil(Log2($n)) == 

            floor(Log2($n)));

}

  
// Код драйвера

if(isPowerOfTwo(31))

echo "Yes\n";

else

echo "No\n";

  

if(isPowerOfTwo(64))

echo "Yes\n";

else

echo "No\n";

      
// Этот код добавлен
// Sam007
?>

Выход:

No
Yes

2. Другое решение состоит в том, чтобы продолжать делить число на два, т.е. делать n = n / 2 итеративно. На любой итерации, если n% 2 становится ненулевым и n не равно 1, то n не является степенью 2. Если n становится 1, то это степень 2.

PHP

<?php

  
// Функция для проверки
// х - степень 2

function isPowerOfTwo($n)

{

if ($n == 0)

    return 0;

while ($n != 1)

{

    if ($n % 2 != 0)

        return 0;

    $n = $n / 2;

}

return 1;

}

  
// Код драйвера

if(isPowerOfTwo(31))

    echo "Yes\n";

else

    echo "No\n";

  

if(isPowerOfTwo(64))

    echo "Yes\n";

else

    echo "No\n";

  
// Этот код добавлен
// Sam007
?>

Выход:

No
Yes

3. Все степени двух чисел имеют только один установленный бит. Так что считай нет. из установленных битов, и если вы получаете 1, то число является степенью 2. Пожалуйста, смотрите Количество установленных бит в целом числе для подсчета установленных бит.

4. Если мы вычтем степень 2 чисел на 1, тогда все неустановленные биты после единственного установленного бита станут установленными; и установленный бит становится неустановленным.

Например, для 4 (100) и 16 (10000) мы получим следующее после вычитания 1
3 -> 011
15 -> 01111

Таким образом, если число n является степенью 2, то поразрядно & n и n-1 будут равны нулю. Мы можем сказать, что n является степенью 2 или не основано на значении n & (n-1). Выражение n & (n-1) не будет работать, когда n равно 0. Для обработки этого случая наше выражение также станет n & (! N & (n-1)) (благодаря http://espressocode.top/program-to -find-ли-нет-не-сила-два / Мохаммед за добавление этого случая).
Ниже приведена реализация этого метода.

PHP

<?php
// PHP программа для эффективного
// проверка мощности на 2

  
// Функция для проверки
// х - степень 2

function isPowerOfTwo ($x)

{
// Первый х в приведенном ниже выражении
// для случая, когда х равен 0

return $x && (!($x & ($x - 1)));

}

  
// Код драйвера

if(isPowerOfTwo(31))

    echo "Yes\n" ;

else

    echo "No\n";

  

if(isPowerOfTwo(64))

    echo "Yes\n" ;

else

    echo "No\n";

          
// Этот код предоставлен Sam007
?>

Выход:

No
Yes

Пожалуйста, обратитесь к полной статье о Программе, чтобы узнать, является ли «нет» степенью двух, для более подробной информации!

Рекомендуемые посты:

Программа PHP, чтобы найти, является ли нет сила двух

0.00 (0%) 0 votes