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.
Deja una respuesta