none
Calcular bits RRS feed

  • Pregunta

  • Hola:

    Con el Visual Studio Community 2015 en modo consola C#, quiero hacer un cálculo sencillo como puede ser esto.

    2^32

    El resultado es 4294967296, lo se proque lo vi en Internet.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Calculos_Bits
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.Title = "Calcular bits";
    
                ulong Valor = 2;
                ulong Bits;
    
                Console.Write("Introduce un número: (Por ejemplo, 32.) ");
                Bits = Console.Read();
                Console.WriteLine();
    
    
                for (UInt64 Potencia = 0; Potencia <= Bits; Potencia++)
                {
                    Console.WriteLine("{0}^{1} = {2:N0} (0x{2:X})", Valor, Potencia, (ulong)Math.Pow(Valor, Potencia));
                }
    
                Console.ReadKey(); // Pulse cualquier tecla para salir.
            }
        }
    }

    Si introduzco el valor 32 me muestra un rsultado y si pongo 64 otro. Antes que nada, me da este error.

    Gravedad    Código    Descripción    Proyecto    Archivo    Línea
    Error    CS0266    No se puede convertir implícitamente el tipo 'int' en 'ulong'. Ya existe una conversión explícita (compruebe si le falta una conversión)    Calculos_Bits    c:\users\usuario\documents\visual studio 2015\Projects\Calculos_Bits\Calculos_Bits\Program.cs    20

    ¿Cómo lo resuelvo?

    Saludos.


    http://electronica-pic.blogspot.com

    viernes, 5 de febrero de 2016 15:13

Respuestas

  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Calculos_Bits
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.Title = "Calcular bits";
    
                ulong Valor = 2;
                ulong Bits;
    
                Console.Write("Introduce un número: (Por ejemplo, 32.) ");
                while(!ulong.TryParse(Console.ReadLine(), out Bits)){}
                Console.WriteLine();
    
    
                for (UInt64 Potencia = 0; Potencia <= Bits; Potencia++)
                {
                    Console.WriteLine("{0}^{1} = {2:N0} (0x{2:X})", Valor, Potencia, (ulong)Math.Pow(Valor, Potencia));
                }
    
                Console.ReadKey(); // Pulse cualquier tecla para salir.
            }
        }
    }


    viernes, 5 de febrero de 2016 16:25
  • Solo agrega (ulong)

     Bits = (ulong)Console.Read();


    Att. Franklin Andino

    • Marcado como respuesta Metaconta miércoles, 15 de marzo de 2017 11:40
    viernes, 5 de febrero de 2016 16:39

Todas las respuestas

  • Hola:

    El ejemplo que sigo es este, aunque ponga solo long, no me hace caso.

    https://msdn.microsoft.com/es-es/library/system.math.pow%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    He mirado el convertidor de datos, aún así pezco.

    http://www.convertdatatypes.com/Convert-int-to-ulong-in-CSharp.html

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Calculos_Bits
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.Title = "Calcular bits";
    
                long Valor = 2;
                long Bits;
    
                Console.Write("Introduce un número: (Por ejemplo, 32.) ");
                Bits = Console.Read();
                Console.WriteLine();
    
    
                for (UInt64 Potencia = 0; Potencia <= Bits; Potencia++)
                {
                    Console.WriteLine("{0}^{1} = {2:N0} (0x{2:X})", Valor, Potencia, (long)Math.Pow(Valor, Potencia));
                }
    
                Console.ReadKey(); // Pulse cualquier tecla para salir.
            }
        }
    }

    Gravedad    Código    Descripción    Proyecto    Archivo    Línea
    Error    CS0034    El operador '<=' es ambiguo en operandos del tipo 'ulong' y 'long'    Calculos_Bits    c:\users\usuario\documents\visual studio 2015\Projects\Calculos_Bits\Calculos_Bits\Program.cs    25


    Saludos.

    http://electronica-pic.blogspot.com

    viernes, 5 de febrero de 2016 15:49
  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Calculos_Bits
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.Title = "Calcular bits";
    
                ulong Valor = 2;
                ulong Bits;
    
                Console.Write("Introduce un número: (Por ejemplo, 32.) ");
                while(!ulong.TryParse(Console.ReadLine(), out Bits)){}
                Console.WriteLine();
    
    
                for (UInt64 Potencia = 0; Potencia <= Bits; Potencia++)
                {
                    Console.WriteLine("{0}^{1} = {2:N0} (0x{2:X})", Valor, Potencia, (ulong)Math.Pow(Valor, Potencia));
                }
    
                Console.ReadKey(); // Pulse cualquier tecla para salir.
            }
        }
    }


    viernes, 5 de febrero de 2016 16:25
  • Solo agrega (ulong)

     Bits = (ulong)Console.Read();


    Att. Franklin Andino

    • Marcado como respuesta Metaconta miércoles, 15 de marzo de 2017 11:40
    viernes, 5 de febrero de 2016 16:39