如何设计一个采用两个浮点数的算法,并仅使用加法,位移和按位运算将它们相乘?
我已经为整数找到了这样的one,但这不适用于浮点数。 我还发现another与我的需求非常相似,但在我的情况下也禁止使用日志。
根据IEEE754标准存储浮点数。我也试图保持他们的指数部分,并且在没有运气的情况下按位累加它们的小数部分。
答案 0 :(得分:0)
根据http://en.wikipedia.org/wiki/IEEE_floating_point,IEEE754号码x = (-1)^s * c * b^q
由s,c,b,q
表示,均为整数。 for具有相同基数b
的两个浮点数是相同的。
因此,两个浮点数x
和y
的乘法是:
(-1)^(s1+s2)*c1*c2*b^(q1+q2)
所以新的浮点数由s1+s2, c1*c2, b q1+q2
表示,所以你只剩下来处理c1
和c2
的乘法,两者都是整数,所以你是完成。