fork(1) download
  1. using System;
  2.  
  3. namespace Articulos.Preguntas.P0720
  4. {
  5. public sealed class ComprobacionPotenciaDe2
  6. {
  7. public static void Main()
  8. {
  9. ulong numero = 8;
  10. bool esPotenciaDe2 = false;
  11.  
  12. esPotenciaDe2 = EsPotenciaDe2 (numero);
  13.  
  14. Console.WriteLine ("\n{0} {1}es potencia de 2.",
  15. numero.ToString (),
  16. esPotenciaDe2 ? " " : "no "
  17. );
  18.  
  19. numero = 11;
  20.  
  21. esPotenciaDe2 = EsPotenciaDe2 (numero);
  22.  
  23. Console.WriteLine ("\n{0} {1}es potencia de 2.\n",
  24. numero.ToString (),
  25. esPotenciaDe2 ? " " : "no "
  26. );
  27. }
  28.  
  29. // Este método comprueba que un número entero de 64
  30. // bits sin signo (ulong) es potencia de 2:
  31. private static bool EsPotenciaDe2(ulong numero)
  32. {
  33. // Primero comprueba que es distinto de 0,
  34. // luego resta una unidad del número `numero`
  35. // realiza la operación bitwise AND, finalmente
  36. // comprueba que sea igual a 0;
  37. // == 0 -> true
  38. // != 0 -> false
  39. return ((numero != 0) && ((numero & (numero - 1)) == 0));
  40. }
  41. }
  42. }
Success #stdin #stdout 0.03s 33952KB
stdin
Standard input is empty
stdout
8  es potencia de 2.

11 no es potencia de 2.