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.

Etiquetas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *