using System; namespace Articulos.Preguntas.P0720 { public sealed class ComprobacionPotenciaDe2 { public static void Main() { ulong numero = 8; bool esPotenciaDe2 = false; esPotenciaDe2 = EsPotenciaDe2 (numero); Console.WriteLine ("\n{0} {1}es potencia de 2.", numero.ToString (), esPotenciaDe2 ? " " : "no " ); numero = 11; esPotenciaDe2 = EsPotenciaDe2 (numero); Console.WriteLine ("\n{0} {1}es potencia de 2.\n", numero.ToString (), esPotenciaDe2 ? " " : "no " ); } // Este método comprueba que un número entero de 64 // bits sin signo (ulong) es potencia de 2: private static bool EsPotenciaDe2(ulong numero) { // Primero comprueba que es distinto de 0, // luego resta una unidad del número `numero` // realiza la operación bitwise AND, finalmente // comprueba que sea igual a 0; // == 0 -> true // != 0 -> false return ((numero != 0) && ((numero & (numero - 1)) == 0)); } } }