我被要求在作业中表示IEEE 754表示中的十进制0.1。以下是我所做的步骤:
然而,在线转换器,以及此answer on stack exchange建议不然。他们提出了这个解决方案:
s eeeeeeee mmmmmmmmmmmmmmmmmmmmmmm
0 01111011 10011001100110011001101
区别在于右边的数字1。为什么不是1100,为什么是1101?
答案 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的转换。