如何将2+(2/7)转换为IEEE 754浮点

时间:2011-04-21 23:40:52

标签: binary ieee-754

有人可以向我解释将十进制格式的数字(例如2+(2/7))转换为IEEE 754浮点表示的步骤吗?谢谢!

1 个答案:

答案 0 :(得分:1)

首先,2 + 2/7不是大多数人所谓的“十进制格式”。 “十进制格式”更常用于表示如下数字:

2.285714285714285714285714285714285714285714...

即使...有点快又宽松。更常见的是,该数字将被截断或舍入为某些十进制数字:

2.2857142857142857

当然,此时它已不再完全等于2 + 2/7,但对于大多数用途而言“足够接近”。

我们做类似的事情,将数字转换为IEEE-754格式;而不是基数10,我们首先在基数2中写入数字:

10.010010010010010010010010010010010010010010010010010010010010...

接下来,我们通过将2^e * 1.xxx...形式写入某个指数e(具体地说,我们数字的前导位的数字位置)来“标准化”该数字:

2^1 * 1.0010010010010010010010010010010010010010010010010010010010010...

此时,我们必须选择特定的IEEE-754格式,因为我们需要知道要保留多少位数。让我们选择“单精度”,它具有24位有效数。我们将重复的二进制数舍入为24位:

2^1 * 1.00100100100100100100100  10010010010010010010010010010010010010...
           24 leading bits          bits to be rounded away

由于要舍入的尾随位大于1000...,因此该数字向上舍入为:

2^1 * 1.00100100100100100100101

现在,该值如何实际以IEEE-754格式编码?单精度格式具有前导符号(零,因为数字为正),后跟八位,包含二进制值127 + e,后跟有效数的小数部分:

0 10000000 00100100100100100100101
s exponent fraction of significand

以十六进制表示0x40124925