Para ello necesitamos crear un form con:
2 textbox llamados txt_entrada y txt_salida
1 button llamado btn_calcular
En el botón btn_calcular digitar el siguiente codigo:
int dec, bin;
string sal = "";
dec = Convert.ToInt16(txt_entrada.Text);
while (dec > 0)
{
bin = dec % 2;
dec = dec / 2;
Convert.ToString(bin);
sal = bin + sal;
txt_salida.Text = Convert.ToString(sal);
}
txt_entrada.Focus();
Explicacion del código:
int dec, bin: Declaramos las variables dec y bin tipo entero.
string sal = "": Declaramos la variable sal tipo cadena igualada a 'nada'.
dec = Convert.ToInt16(txt_entrada.Text): Asignamos a la variable dec el valor del textbox txt_entrada al mismo tiempo convertimos el textbox en entero.
while (dec > 0): Mientras la variable dec sea mayor que 0 entonces ...
bin = dec % 2: La variable bin sera igual al valor de la variable dec % 2. (% es la representacion del MOD en C#). El mod se utiliza para obtener el residuo de una division. La division sera entre el numero que le indiquemos al lado, en este caso el numero 2, por ser 2 la base de los numeros binarios.
dec = dec / 2: Luego de obtener el primer residuo la variable dec tendra el valor de ella misma entre 2.
Convert.ToString(bin): convertimos la variable "bin" en tipo string para poder proceder con la conatenacion.
sal = bin + sal: La variable "sal" sera igual al valor de la variable bin (que contiene el residuo de la division) concatenada con la misma variabe "sal" para ir acumulando el valor de los demas residuos que se generen mientras se ejecuta el WHILE.
txt_salida.Text = Convert.ToString(sal): Finalmente se asigna a el textbox txt_salida el valor de "sal".
2 comentarios
excelente tu código, sencillo y corto.
ReplyPara mejorarlo yo agregue al final del ciclo while << sal = ""; >>
para que se limpie al introducir un nuevo número y omití tu línea de código << txt_entrada.Focus(); >>
El problema era que al introducir un nuevo valor, el valor de la salida anterior se seguía almacenando, entonces solo hay que agregar:
while (dec > 0)
{
--
--
--
}
sal = ""; //Para limpiar y no se siga almacenando el valor anterior
Excelente!!! Muchas gracias, me ayudo mucho!!!
ReplyPublicar un comentario