Convertir de binario a decimal y viceversa en C#

Hola a todos, hoy os voy a explicar como podemos convertir un numero binario a decimal y viceversa en C#.

Si queremos pasar de decimal a binario, es proceso normal es el siguiente:

  • Cogemos el modulo de 2 de ese numero.
  • Multiplicamos ese numero por 10 elevado al indice correspondiente.
  • Lo sumamos al total.
  • Dividimos el numero entre 10.
  • Repetimos el proceso anterior hasta llegar a 0.

El código para pasar de decimal a binario:


public static long decimalBinario(int numero)
{

    long binario = 0;

    const int DIVISOR = 2;
    long digito = 0;

    for (int i = numero % DIVISOR, j = 0; numero > 0; numero /= DIVISOR, i = numero % DIVISOR, j++)
    {
        digito = i % DIVISOR;
        binario += digito * (long)Math.Pow(10, j);
    }


    return binario;
}


Si queremos pasar de decimal a binario, es proceso normal es el siguiente:

  • Cogemos el modulo de 10 de ese numero.
  • Multiplicamos ese numero por 2 elevado al indice correspondiente.
  • Lo sumamos al total.
  • Dividimos el numero entre 10.
  • Repetimos el proceso anterior hasta llegar a 0.
  • Si en cualquier momento, la cifra no es cero o uno, retornamos un -1 para indicar que esta mal.

El código para convertir de binario a decimal:


public static int binarioDecimal(long binario)
{

    int numero = 0;
    int digito = 0;
    const int DIVISOR = 10;

    for (long i = binario, j = 0; i > 0; i /= DIVISOR, j++)
    {
        digito = (int)i % DIVISOR;
        if (digito != 1 && digito != 0)
        {
            return -1;
        }
        numero += digito * (int)Math.Pow(2, j);
    }

    return numero;
}

Os dejo un pequeño ejemplo:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EjemploConversion
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.WriteLine("Escribe un numero decimal");
            int numero = Convert.ToInt32(Console.ReadLine());

            long binario = decimalBinario(numero);
            Console.WriteLine("El numero decimal " + numero + " en binario es " + binario);

            int decimalB = binarioDecimal(binario);
            Console.WriteLine("El numero binario " + binario + " en decimal es " + decimalB);

            Console.ReadLine();
        }

        public static long decimalBinario(int numero)
        {

            long binario = 0;

            const int DIVISOR = 2;
            long digito = 0;

            for (int i = numero % DIVISOR, j = 0; numero > 0; numero /= DIVISOR, i = numero % DIVISOR, j++)
            {
                digito = i % DIVISOR;
                binario += digito * (long)Math.Pow(10, j);
            }


            return binario;
        }


        public static int binarioDecimal(long binario)
        {

            int numero = 0;
            int digito = 0;
            const int DIVISOR = 10;

            for (long i = binario, j = 0; i > 0; i /= DIVISOR, j++)
            {
                digito = (int)i % DIVISOR;
                if (digito != 1 && digito != 0)
                {
                    return -1;
                }
                numero += digito * (int)Math.Pow(2, j);
            }

            return numero;
        }

}



Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada.