计算机组成原理 - 浮点数和整数的精确转换
以IEEE 754 32bit和64bit浮点数为例。
总位数 | 数符位数 | 阶码位数 | 尾数位数 | 范围 |
---|---|---|---|---|
32 | 1 | 8 | 23 | \(1.0\times2^{-126},(2-2^{23})\times2^{127}\) |
64 | 1 | 11 | 52 | \(1.0\times2^{-1022},(2-2^{52})\times2^{1023})\) |
记32bit浮点数 \(x=1.x_1x_2...x_{23}\times2^{i}, -126 \le i \le 127\) ,不考虑 \(i<0\) ,则
\(x=2^i+0.x_1x_2...x_{23}\times2^i
\\=2^i+x_1x_2...x_i.x_{i+1}...x_{23}
\\\in[2^i,2^{i+1}-1]\)
此时有 \(0\le i \le 23\)
故可以覆盖的连续整数为 \([1,2^{24}]\)。(0是否能精确表示?)
相应的,64bit浮点数为 \([1,2^{53}]\) 。
理解:浮点数能表示的整数由尾数的有效位数决定,尾数有一个隐藏位,因此有效位为尾数的位数+1。