如何设计一个算法,将两个浮点数乘以'*'?

时间:2013-12-01 10:55:54

标签: c++ algorithm ieee-754

如何设计一个采用两个浮点数的算法,并仅使用加法,位移和按位运算将它们相乘?

我已经为整数找到了这样的one,但这不适用于浮点数。 我还发现another与我的需求非常相似,但在我的情况下也禁止使用日志。

根据IEEE754标准存储浮点数。我也试图保持他们的指数部分,并且在没有运气的情况下按位累加它们的小数部分。

1 个答案:

答案 0 :(得分:0)

根据http://en.wikipedia.org/wiki/IEEE_floating_point,IEEE754号码x = (-1)^s * c * b^qs,c,b,q表示,均为整数。 for具有相同基数b的两个浮点数是相同的。

因此,两个浮点数xy的乘法是:

(-1)^(s1+s2)*c1*c2*b^(q1+q2)所以新的浮点数由s1+s2, c1*c2, b q1+q2表示,所以你只剩下来处理c1c2的乘法,两者都是整数,所以你是完成。