有没有办法在不使用64位中间值的情况下将两个32位浮点数相乘?
背景: 在IEEE浮点数中,1位专用于符号,8位专用于指数,23位专用于尾数。将两个数相乘时,尾数必须分别相乘。执行此操作时,您将得到一个48位数字(因为暗示了最重要的1位)。收到48位数后,该值应截断25位,以便结果中只保留23个最高有效位。
我的问题是,要按原样进行乘法运算,您需要一个64位数来存储中间结果。但是,我假设有一种方法可以在不使用64位数字的情况下执行此操作,因为32位体系结构没有使用64位数字的奢侈,并且它们仍然能够执行32位浮点运算数字乘法。那么如何在不使用64位中间数的情况下实现这一目标呢?
答案 0 :(得分:0)
来自https://isocpp.org/wiki/faq/newbie#floating-point-arith2:
浮点计算和比较通常由 通常包含特殊寄存器的特殊硬件,以及那些 寄存器通常具有比双精度更多的位。
因此,即使在32位架构上,您可能还有超过32位的寄存器用于浮点运算。