martes, 13 de junio de 2017

C, 25. Decimal a binario

// 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 :)