如何设计一种算法,将两个浮点数相乘而不带"*"?
How to design an algorithm that multiplies two floats without '*'?
如何设计一种算法,只使用加法、移位和逐位运算来获取两个浮点并将其相乘?
我已经为整数找到了一个这样的函数,但它不适用于浮点运算。我还发现了另一个很像我需要的东西,但在我的情况下,日志也是被禁止的。
浮点数是根据IEEE754标准存储的。我也试着保留它们的指数部分,并逐位乘以它们的分数部分,但运气不佳。
根据http://en.wikipedia.org/wiki/IEEE_floating_point,一个IEEE754数字x = (-1)^s * c * b^q
由s,c,b,q
表示,全部为整数。对于具有相同基数的两个浮点数CCD_ 3是相同的。
所以两个浮点数x
和y
的乘积是:
(-1)^(s1+s2)*c1*c2*b^(q1+q2)
,所以新的浮点表示为:s1+s2, c1*c2, b q1+q2
,所以你只需要处理c1
和c2
的乘积,两者都是整数,所以你就完成了。
相关文章:
- 为什么将两个浮点数相加会得到一个整数C++?
- 是否可以在 for 循环中添加两个浮点数?
- AVX2:计算 512 个浮点数组的点积
- 编写程序,导入三个浮点数a,b和c.按升序排序
- 在不使用 * 和 / 运算符的情况下将两个浮点数相乘和除以
- 如何线性化两个浮点变量的乘积
- 比较 C++ 中的两个浮点变量
- 有没有更有效的方法可以原子地添加两个浮点数?
- 使用 cin 错误输入多个浮点数
- 添加 2 个浮点数时保持精度
- 如何将 4 个浮点数的 ps 向量转换为 4 个双精度并存储到 pd 数组
- 划分两个浮点数不会给出确切的结果
- 如何找到两个浮点数之间的最短十进制数
- 如何设计一种算法,将两个浮点数相乘而不带"*"?
- 用c++把两个浮点数相乘得到的结果是非数字的
- 在c++中计算两个浮点数之差时,y * (1 - x / y)是否优于y - x ?
- c++将两个浮点数相除得到int
- 如何使用sse将两个浮点数组相乘
- 如何在x86汇编中移动两个浮点数的结果
- 两个浮点数相加时的意外输出