// Calculadora decimal a binario (sin recursividad)
#include<stdio.h>
int main(){
    int i=0, n1, a[9999];               // 1) a[x] limita cuantos digitos
                                        // pueden aparecer en el array.
    printf("Decimal: ");                // 2) Pedimos al usuario el no.decimal
    scanf("%i",&n1);                    // se almacena en n1.
    while(n1>0){                        // 3) Mientras n1 sea mayor que 0
        a[i] = n1%2;                    // introducimos en el array n1mod2
        n1 /= 2;                        // almacenamos nuevo valor de n1, n1/2
        ++i;                            // nos desplazamos al siguiente digito
    }
    for(n1=i-1; n1>=0; --n1)            // despues de imprimir:
        printf("Binario: %d",a[n1]);    // 4) La sentencia for esta invertida
    printf("\n");                       // de modo que imprima de dcha a izq.
    return 0;
}
¿Cómo pasar de decimal a binario?
- Dividimos 35, 34 y 10 entre 2 de forma sucesiva hasta obtener un cociente igual a 1.
- 35 : 2 = 17 + 1 // 17 : 2 = 8 + 1 // 8 : 2 = 4 + 0 // 4 : 2 = 2 + 0 // 2 : 2 = 1 + 0
- 34 : 2 = 17 + 0 // 17 : 2 = 8 + 1 // 8 : 2 = 4 + 0 // 4 : 2 = 2 + 0 // 2 : 2 = 1 + 0
- 10 : 2 = 5 + 0 // 5 : 2 = 2 + 1 // 2 : 2 = 1 + 0
- Anotamos el último cociente, y a continuación los restos de derecha a izquierda.
- 35 = 100011 // 34 = 100010 // 10 = 1010
- Podemos hacer la comprobación con el programa de arriba :)
 
Lámpara
ResponderEliminar