Introducción

Vamos a ver cómo podemos convertir un número decimal a binario en C. Será más que nada un ejercicio resuelto, no vamos a ver optimizaciones ni nada de eso porque hay miles y mejores formas de hacerlo.

Dicho esto, veamos cómo convertir manualmente.

Más tarde veremos cómo convertirlo usando itoa 😉

Por cierto, te invito a leer el uso de la función div para que veas por qué usamos lldiv.

Punto decimal

Si después de leer el post quieres saber cómo convertir un número que tiene punto decimal te invito a ver mi otro artículo de programación para conversión de un número decimal con parte fraccionaria.

Convertir un número decimal a binario en C

Esto es lo mismo que cambiar un número base 10 a base 2. Aquí dejo el código:

See the gist on github.

Está largo por los comentarios, pero bueno vamos paso por paso.

Declaramos una cadena de longitud N, y N es el número de bits. De esto depende el máximo número decimal que el usuario puede ingresar, el cual obtenemos elevando dos a la potencia N y restando uno al resultado.

Por ejemplo, si el número es 8 entonces 2 ^ 8 = 256, menos 1 = 255

Llenamos la cadena con ceros desde 0 hasta el número de bits (que es lo mismo que la longitud)

Luego vamos dividiendo el número entre dos, usamos la función lldiv para dividir un long long sin perder precisión. Comparamos el residuo, si es uno entonces a la cadena le ponemos un uno, y si es cero pues cero.

Por cierto, al número le asignamos el resultado de dividirlo entre 2. Por ejemplo, si es 20 entonces luego será 10, más tarde 5, 2, 1 y 0.

Vamos así hasta que el número se convierte en cero, que es cuando salimos del ciclo e imprimimos el número binario.

Cabe mencionar que usamos el contador y lo vamos disminuyendo debido a que si dividimos el número entre dos y vamos imprimiendo el residuo, el número binario estará al revés; es por ello que empezamos desde el final de la cadena hasta llegar al índice 0.

Finalmente, si cambiamos a NUMERO_DE_BITS podemos permitir números mucho más grandes.

Uso del programa

Bueno, ahora veamos algunos casos de uso. En este caso lo compilé con NUMERO_DE_BITS en 8, por lo que el máximo decimal que podemos poner es 255:

Convertir un número decimal a binario en c: con 8 bits

La salida es correcta. Imprime todo como debería ser.

Más tarde lo compilé con 63 bits:

Convertir un número decimal a binario en c: con 63 bits

Y así es como podemos convertir un número decimal a binario en este maravilloso lenguaje.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Compartir
Publicado por
parzibyte

Entradas recientes

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

3 días hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

4 días hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

4 días hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

5 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

2 semanas hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

2 semanas hace

Esta web usa cookies.