32位乘法而不使用64位中间数

时间:2015-09-21 15:22:45

标签: c++ ieee-754

有没有办法在不使用64位中间值的情况下将两个32位浮点数相乘?

背景: 在IEEE浮点数中,1位专用于符号,8位专用于指数,23位专用于尾数。将两个数相乘时,尾数必须分别相乘。执行此操作时,您将得到一个48位数字(因为暗示了最重要的1位)。收到48位数后,该值应截断25位,以便结果中只保留23个最高有效位。

我的问题是,要按原样进行乘法运算,您需要一个64位数来存储中间结果。但是,我假设有一种方法可以在不使用64位数字的情况下执行此操作,因为32位体系结构没有使用64位数字的奢侈,并且它们仍然能够执行32位浮点运算数字乘法。那么如何在不使用64位中间数的情况下实现这一目标呢?

1 个答案:

答案 0 :(得分:0)

来自https://isocpp.org/wiki/faq/newbie#floating-point-arith2

  

浮点计算和比较通常由   通常包含特殊寄存器的特殊硬件,以及那些   寄存器通常具有比双精度更多的位。

因此,即使在32位架构上,您可能还有超过32位的寄存器用于浮点运算。