Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo convertir un número binario de coma flotante a un número decimal en lenguaje C?

¿Cómo convertir un número binario de coma flotante a un número decimal en lenguaje C?

:-) Finalmente hay una solución. Escribí un programa que funciona siempre que los resultados sean correctos.

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;

#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 {

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;