0 00000000000000000000000 0111011
我怎么会这样做我迷路了。
答案 0 :(得分:2)
你的粗体表明你可能对字段的顺序感到有点困惑; IEEE通常将顺序sign,exponent,fraction用于浮点数。 (顺便提一下,如果没有NaN或其他非数字值,这允许使用二进制补码整数排序来排序IEEE浮点数。)
那么我们在这看什么呢?第一位是符号:0所以我们有一个正数。 (如何记住这一点?回到允许使用整数排序 - 二进制补码整数中的前导意味着它是负数。)
接下来的8位是指数:也是0.这是可能的最低指数值;它通常表示一个偏向127的无符号整数,或者值-127。但是,指数值0保留用于编码次正规数(小于通常可表示的最小数);在这种特殊情况下,有效指数是-126,而不是表示数字1.fraction * 2 ^指数,一个次正规表示数字0.fraction * 2 ^指数。
最后,我们得到了分数,即0000000000000000111011
。所以我们的总数是0.0000000000000000111011b * 2 ^ -126。将此转换为十进制留给读者。
答案 1 :(得分:1)
我同意@addoon以前发布的答案。此外,转换可以在某些语言中轻松完成,包括Java:
public class Test {
public static void main(String[] unused) {
int raw = 0b0000000000000000000000000111011;
float f = Float.intBitsToFloat(raw);
System.out.println(f);
}
}
(你需要版本7才能获得二进制文字,但在早期版本中可以直接做同样的事情)
输出为8.3E-44,与正解非正规数的解释一致,并与转换网站一致。