我已经查看了许多类似的问题,但我还没有找到解决方案。目前,-1.978569 是输出而不是 -7.9142766。我正在尝试匹配此页面的输出:http: //babbage.cs.qc.cuny.edu/IEEE-754.old/32bit.html
感谢您的时间!
这是我的代码:
#include <stdio.h>
#include <math.h>
float IEEE_754_to_Float(const unsigned char b[4]) {
int sign = (b[0] >> 7) ? -1 : 1;
unsigned int fraction_bits = ((b[1] & 0x7F) << 16) + (b[2] << 8) + b[3];
float fraction = 0.5f;
unsigned char ii;
for (ii = 0; ii < 24; ++ii)
fraction += ldexpf((fraction_bits >> (23 - ii)) & 1, -(ii + 1));
float significand = sign * fraction;
return ldexpf(significand, 1);
}
int main() {
unsigned char b[]={0xC0, 0xFD, 0x41, 0xC1};
float f=IEEE_754_to_Float(b);
printf("%f\n",f);
return(0); }