以二进制双精度转换十进制数,如何避免归一化后的最后一位丢失?

计算科学 浮点 精确
2021-12-02 10:34:12

我有十进制数:0.023,我想用二进制数转换52双精度中的尾数


  • 如果我去转换,在这里使用这个实用程序,以非规范化的形式52我有的位:

0.0000010111100011010100111111011111001110110110010001

所以当我去规范化时,我得到的整数部分没有存储,然后是 52 位,我在左移后完成了零填充:

1.0111100011010100111111011111001110110110010001000000zero fill×26

这就是我期望的结果!这是我的程序!


  • 相反,如果我去转换,在这里使用这个实用程序,直接以规范化的形式,我有:

1.011110001101010011111101111100111011011001000101101

  • 怎么可能有,不是全零5位数字?
  • 是否存在一个额外的寄存器来记忆这五个数字,然后在标准化移位后检索它们,并因此附加它们?

拜托,你能帮帮我吗?非常感谢!

1个回答

如果您首先转换为非规范化形式然后进行规范化,那么您当然会在最后得到零,因为规范化无法知道还有什么可以放在那里。

但这不是将十进制数转换为浮点数的方式。当然,首先进行标准化,然后才计算经过(二进制)点的数字。