[ Foro de C ]
Hola que tal, tengo una duda con un trabajo de programación en c.
1) Implemente un programa que solicite un número real, y usando operadores a nivel de bits pueda imprimir en pantalla los bits correspondientes al bit de signo, los bits del exponente y los bits de la mantisa. Por ejemplo:
Ingrese un número real: 2.5
01000000 00100000 00000000 00000000
bit de signo: 0 (0)
bits del exponente: 10000000 (128)
bits de la mantisa: 01000000000000000000000 (2097152)
Implemente funciones con los siguientes prototipos:
unsigned int get_ieee_exp (float);
unsigned int get_ieee_sign (float);
unsigned int get_ieee_mantissa (float);
para poder mostrar los valores enteros correspondientes a cada grupo de bits (los valores entre paréntesis)
Puede controlar el correcto funcionamiento utilizando conversores online como
https://www.h-schmidt.net/FloatConverter/IEEE754.html
2) Implemente una nueva versión del programa usando campos de bits.
Mi programa:
#include <stdio.h>
void printBinary(int n, int i)
{
int k;
for (k = i - 1; k >= 0; k--) {
if ((n >> k) & 1)
printf("1");
else
printf("0");
}
}
typedef union {
float f;
struct
{
unsigned int mantissa : 23;
unsigned int exponent : 8;
unsigned int sign : 1;
} raw;
} myfloat;
void printIEEE(myfloat var)
{
printf("%d | ", var.raw.sign);
printBinary(var.raw.exponent, 8);
printf(" | ");
printBinary(var.raw.mantissa, 23);
printf("\n");
}
int main()
{
myfloat var;
var.f = 23;
printf("IEEE 754 representation of %f is : \n",
var.f);
printIEEE(var);
return 0;
}
Que debería agregar en mi programa para que me analice los valores enteros correspondientes a cada grupo de bits? Me imprime el valor en formato ieee754 pero no los valores que corresponden a cada parte, no se como se haría esa parte. si alguien puede ayudarme le agradeceria
we gracias por nada
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)