Por favor, activa JavaScript y desactiva tu adblock para este sitio

El Javatar

Blog dedicado a la Programación en Java, C, PHP, Phyton, HTML, SQL y Mucho Más

lunes, 14 de abril de 2014

Como Convertir un Numero Decimal a Binario en C

Hola, es un poco tarde (ya son más de las 11 de la noche), pero estuve viajando y no había podido conectarme antes :)  Bueno, lo importante es que ahora seguiremos con la continuación de nuestra serie de artículos para convertir un número decimal entero positivo a su equivalente en binario en varios lenguajes de programación, y hoy es el turno del lenguaje C.

Como te darás cuenta, en lenguaje C las cosas cambian un poquito, ya que no trae las funciones nativas que vemos en otros lenguajes para concatenar cadenas de caracteres, por lo que nosotros mismos tendremos que hacer nuestra propia función para hacer esta tarea. Aquí está el código:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *concatenar(char *cadena, char caracter);

void main() {
    printf("Ingrese un numero entero positivo\n");
    int numero;
    char *binario = "";
    scanf("%d",&numero);
    if (numero > 0) {
        while (numero > 0) {
            if (numero%2 == 0) {
                char c = '0';
                binario = concatenar(binario, c);
            } else {
                char c = '1';
                binario = concatenar(binario, c);
            }
            numero = (int) numero/2;
        }
    } else if (numero == 0) {
        binario = "0";
    } else {
        binario = "No se pudo convertir el numero. Ingrese solo numeros positivo";
    }
    printf("El resultado de la conversion es: %s",binario);
}

// Función encargada de ir armando la cadena del resultado
char *concatenar(char *cadena, char caracter) {
    char *binario;
    int i;
    binario = (char*)malloc(strlen(cadena) + 2);
    binario[0] = caracter;
    // Encontramos el final de la cadena
    for (i = 1; cadena[i-1] != '\0'; i++) {
        binario[i] = cadena[i-1];
    }
    // Añadimos el caracter de fin de cadena
    binario[i++] = '\0';
    return binario;
}

Ahora solo resta probar que esto funcione. Para hacerlo usamos el DEV C++, ingresando por teclado el numero 13, que como ya hemos visto en anteriores artículos, el resultado debe ser 1101:

Como Convertir un Numero Decimal a Binario en C

2 comentarios:

  1. la funcion no seria, "int main" en lugar de "void main", por que al final tiene un return binario;

    ResponderEliminar
  2. La verdad, se puede utilizar cualquiera de los dos: "int main()" ó "void main()". De todas formas, C los reconoce a ambos como métodos principales. La única diferencia es que en "int main" debemos de retornar un valor (entero), mientras que con el void no

    ResponderEliminar