考虑将2个浮点数a和b加倍
假设expA = 127,expB = 10
乘法有效数给出1.101 x 2 ^ 137
所以137> = 127> = -126所以有溢出
如果-126> = resultExp,那么有下溢
在这里我不知道如何得到127和-126
127(因为01111111?)
-126(因为10000010?)为什么不是10000000
如果exp是5位怎么办? 01111> = x> = 10010?
答案 0 :(得分:0)
请参阅:IEEE-754 specs
这个C ++代码应该可以工作
int e;
float f=1.5e+34;
unsigned int u;
u=((unsigned int*)((void*)(&f)))[0];
e=(u>>23)&&255;
if (e==255); // +/-Inf,NaN...
else if (e==0) e-=128; // denormalized
else e-=127; // normalized
在e中是float f的指数
因此a*b=c
的解决方案是:
c0=a0*b0
答案 1 :(得分:0)
浮点数中的指数部分,至少在IEEE 754中,没有用你提到的2的补码表示,它表示如下:
我们假设指数部分的宽度为n: