¿Cómo convertir un número binario de coma flotante a un número decimal en lenguaje C?
Entorno: LINUX
Compilar: gcc -test.c -lm
Resultado de la prueba:
Ingrese el número binario:
p>
101011.01011110011101
El número decimal convertido es:
43.368958
#include lt;stdio.hgt; p>
#include lt; math.hgt;
int main(void)
{
char binarioNum[100]; /p>
* No se pueden representar números binarios directamente en lenguaje C.
* Entonces uso una matriz de caracteres para almacenarlo. Ver. En resumen
*Solo nos centramos en los resultados, independientemente del método utilizado
*. :-)
*/
char *p = binarioNum;
double decimalNum = 0
int n = 0, dotsNum; = 0, i = 0, j = 0;
printf("Escriba un número binario:\n");
scanf("s", amp; binarioNum) ;
/**
* Compruebe si el número binario introducido es legal.
*Utilicé puntos decimales. p>
*/
for ( ; *p ! = '\0'; p , n ) {
si (! (*p == '0' || *p == '1' || *p == '.')). {
printf("¡entrada incorrecta!\n");
return
}
if (*p == '.') {
númpuntos
if (númpuntos == 1)
i = n
más { p>
printf("¡número binario incorrecto!\n");
return
}
}
}
if (puntosNum)
j = n -1 - i
else
i = n;
p = binarioNum;
for ( ; i gt; 0; p , i--)
if (*p == '1')
número decimal = pow(2, i -1);
for (p, i = 1; i lt; = j; p, i)
if (*p == '1')
decimalNum = pow(2, -i);
printf("El número decimal convertido es:\n");
printf("f\n", número decimal
devuelve 0;