我的IEEE 754浮点表示有什么问题?

时间:2016-07-04 14:41:42

标签: binary floating-point ieee-754

我被要求在作业中表示IEEE 754表示中的十进制0.1。以下是我所做的步骤:

enter image description here

然而,在线转换器,以及此answer on stack exchange建议不然。他们提出了这个解决方案:

s eeeeeeee mmmmmmmmmmmmmmmmmmmmmmm
0 01111011 10011001100110011001101

区别在于右边的数字1。为什么不是1100,为什么是1101?

1 个答案:

答案 0 :(得分:5)

正如njuffa在评论中所说,四舍五入是对你看到的差异的解释。转换器通常会将最近的浮点值生成为您输入的十进制数.IEEE 754标准建议在从一个基数到另一个基数的转换时考虑舍入模式(例如从十进制到二进制),默认的舍入模式是“到最近”。

两个最接近1/10的单精度浮点值是1.10011001100110011001100×2 -4 和1.10011001100110011001101×2 -4 (低于和高于1/10) )。 被切断的数字是“11001100 ...”,表示真正的1/10更接近上限而不是下限(如果剩下的数字是“100000000 ......”,则实数将完全在-两者之间)。因此,当以舍入到最接近模式进行转换时,选择上限值1.10011001100110011001101×2 -4 作为1/10到binary32的转换。