Introducción
Los sistemas numéricos son maneras de representar números utilizando diferentes símbolos y operaciones matemáticas. La conversión entre diferentes sistemas numéricos es una tarea común en la programación. En este laboratorio, mostraremos programas que pueden convertir números de un sistema a otro. Cubriremos:
- Conversión de binario a decimal
- Conversión de octal a decimal
- Conversión de decimal a binario (sin recursión)
- Conversión de decimal a binario (con recursión)
Nota: Debes crear el archivo
~/project/main.ctú mismo para practicar la codificación y aprender cómo compilar y ejecutarlo utilizando gcc.
cd ~/project
## crear main.c
touch main.c
## compilar main.c
gcc main.c -o main
## ejecutar main
./main
Conversión de binario a decimal
El binario es un sistema numérico que utiliza solo dos dígitos, 0 y 1. El decimal es un sistema numérico que utiliza diez dígitos, del 0 al 9. Aquí está el programa en C que convierte un número binario en su equivalente decimal:
#include<stdio.h>
#include<math.h>
// Declaración del prototipo de la función
int binary_decimal(int n);
int main()
{
printf("\n\n\t\tLabEx - Mejor lugar para aprender\n\n\n");
int n;
char c;
printf("Ingrese el número binario: ");
scanf("%d", &n);
printf("\n\n\nEl equivalente decimal de %d es %d\n\n", n, binary_decimal(n)); // llamada a la función
printf("\n\n\t\t\tCodificar es divertido!\n\n\n");
return 0;
}
// Definición de la función para convertir binario a decimal.
int binary_decimal(int n)
{
int decimal = 0, i = 0, rem;
while(n!= 0)
{
rem = n%10; // da el dígito en la posición de las unidades
n = n/10; // da el número excluyendo su dígito de las unidades
/*
pow es una función definida por el sistema que toma
dos enteros como parámetros de entrada
*/
decimal += rem*pow(2, i++);
}
/*
devuelve el equivalente decimal del número binario de entrada
a la llamada de la función
*/
return decimal;
}
Conversión de octal a decimal
El octal es un sistema numérico que utiliza ocho dígitos, del 0 al 7. Aquí está el programa en C que convierte un número octal en su equivalente decimal:
#include<stdio.h>
#include<math.h>
int main()
{
printf("\n\n\t\tLabEx - Mejor lugar para aprender\n\n\n");
long int octal, val, decimal = 0;
int i = 0;
printf("Ingrese cualquier número octal: ");
scanf("%ld", &val);
octal = val;
while(octal!= 0)
{
/*
i++ es un incremento posteriore, donde el valor se
asigna primero y luego se incrementa
*/
decimal += (octal % 10)*pow(8, i++);
octal/=10; // lo mismo que octal=octal/10
}
printf("\n\n\nEl valor decimal equivalente de %ld es %ld\n\n\n", val, decimal);
printf("\n\n\t\t\tCodificar es divertido!\n\n\n");
return 0;
}
Conversión de decimal a binario (sin recursión)
Aquí está el programa en C que convierte un número decimal en su equivalente binario sin recursión:
#include<stdio.h>
int main()
{
printf("\n\n\t\tLabEx - Mejor lugar para aprender\n\n\n");
int n,c,k;
printf("Ingrese un entero en el sistema de números decimales: ");
scanf("%d", &n);
// En formato de 31 bits
printf("\n\n\nEl equivalente binario del valor decimal %d es:", n);
for(c = 31; c >= 0; c--)
{
k = n>>c;
/*
num&1 = devuelve verdadero si el último dígito de num es 1
de lo contrario falso
*/
if(k&1)
printf("1");
else
printf("0");
}
printf("\n");
printf("\n\n\t\t\tCodificar es divertido!\n\n\n");
return 0;
}
Conversión de decimal a binario (con recursión)
Aquí está el programa en C que convierte un número decimal en su equivalente binario con recursión:
#include<stdio.h>
// Declaraciones del prototipo de la función
void decimal_binary(int );
void F(int );
void reverse(int );
int main()
{
printf("\n\n\t\tLabEx - Mejor lugar para aprender\n\n\n");
int n;
printf("\n\nIngrese un entero en el sistema de números decimales: ");
scanf("%d", &n);
// En formato de 31 bits
printf("\n\nEl equivalente binario del valor decimal %d usando el método decimal_binary es: ", n);
decimal_binary(n); // llamada a la función
printf("\n\nEl equivalente binario del valor decimal %d usando el método F() es: ", n);
F(n); // llamada a la función
printf("\n\nLa inversión de la representación binaria del valor %d es: ", n);
reverse(n); // llamada a la función
printf("\n\n\t\t\tCodificar es divertido!\n\n\n");
return 0;
}
// definición de la función
void decimal_binary(int i)
{
if(i <= 1)
printf("%d", i); // para imprimir en formato de arriba hacia abajo
else
{
decimal_binary(i/2);
printf("%d", i%2);
}
}
void F(int j)
{
if(j/2)
{
F(j/2);
}
printf("%d", j%2);
}
void reverse(int k)
{
if(k <= 1)
printf("%d", k);
else
{
printf("%d", k%2);
F(k/2);
}
printf("\n\n");
}
Resumen
En este laboratorio, hemos presentado programas que pueden convertir números entre diferentes sistemas numéricos. Cubrimos la conversión de binario a decimal, octal a decimal y decimal a binario (con y sin recursión). Esperamos que este laboratorio haya ayudado a comprender cómo convertir números entre diferentes sistemas numéricos en el programa de C.



