Рубрики

Программа на C #, чтобы определить, является ли нет степенью двойки

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

Примеры :

Input : n = 4
Output : Yes
22 = 4

Input : n = 7
Output : No

Input : n = 32
Output : Yes
25 = 32

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

C #

// C # Программа для поиска
// нет - сила двух

using System;

  

class GFG {

  

    / * Функция, чтобы проверить, если

   х является степенью 2 * /

    static bool isPowerOfTwo(int n)

    {

        return (int)(Math.Ceiling((Math.Log(n) / Math.Log(2)))) 

              == (int)(Math.Floor(((Math.Log(n) / Math.Log(2)))));

    }

  

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

    public static void Main()

    {

        if (isPowerOfTwo(31))

            Console.WriteLine("Yes");

        else

            Console.WriteLine("No");

  

        if (isPowerOfTwo(64))

            Console.WriteLine("Yes");

        else

            Console.WriteLine("No");

    }

}

  
// Этот код добавлен
// Аканкша Рай (Abby_akku)

Выход:

No
Yes

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

C #

// C # программа для поиска
// нет - сила двух

using System;

  

class GFG {

  

    // Функция для проверки

    // х - степень 2

    static bool isPowerOfTwo(int n)

    {

        if (n == 0)

            return false;

  

        while (n != 1) {

            if (n % 2 != 0)

                return false;

  

            n = n / 2;

        }

        return true;

    }

  

    // Драйвер программы

    public static void Main()

    {

        Console.WriteLine(isPowerOfTwo(31) ? "Yes" : "No");

        Console.WriteLine(isPowerOfTwo(64) ? "Yes" : "No");

    }

}

  
// Этот код предоставлен 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-ли-нет-не-сила-два / Мохаммед за добавление этого случая).
Ниже приведена реализация этого метода.

C #

// C # программа для эффективного
// проверка мощности на 2

using System;

  

class GFG {

    // Метод, чтобы проверить, является ли x степенью 2

    static bool isPowerOfTwo(int x)

    {

        // Первый х в приведенном ниже выражении

        // для случая, когда х равен 0

        return x != 0 && ((x & (x - 1)) == 0);

    }

  

    // Метод драйвера

    public static void Main()

    {

        Console.WriteLine(isPowerOfTwo(31) ? "Yes" : "No");

        Console.WriteLine(isPowerOfTwo(64) ? "Yes" : "No");

    }

}

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

Выход:

No
Yes

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

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

Программа на C #, чтобы определить, является ли нет степенью двойки

0.00 (0%) 0 votes