@darkproject
2018-02-21T17:12:50.000000Z
字数 660
阅读 978
猥琐
计算2^x的浮点表示,其中u2f用于表示无符号整数的0/1序列
float f2(int x)
{
unsigned exp, frac;
unsigned u;
if (x < _) { //值太小,返回0.0
exp = _;
frac = _;
} else if (x < _) { //返回非规格化数据结果
exp = _;
frac = _;
} else if (x < _) { 返回规格化数据
exp = _;
frac = _;
} else { 值太大,返回无穷
exp = _;
frac = _;
}
u = exp << 23 | frac;
return u2f(u);
}
IEEE浮点标准用 V=(-1)^S * M * 2^E 的形式来表示一个数
1. 这里s是首符用于判断这个数的正负,0为正,1为负(此题可以不用考虑)
2. M代表尾数,E为阶码
ps:我们用exp表示编码E的二进制,用frac编码尾数M
一个float单精度浮点由32位二进制组成,我们将它按格式拆分为
0 00111111 00010000000000000000000
长度分别为1和8和23组成32位二进制。
这里第一个序列代表首符,第二个序列代表表示阶码的exp,第三个序列代表表示尾数的frac
规定:规格化数据:exp的二进制表示中不全部为1也不全部为0
非规格化数据:exp的二进制表示中全部为0
解释: