Floating point 将浮点数乘以2

Floating point 将浮点数乘以2,floating-point,Floating Point,有人能告诉我如何将任何单精度浮点数乘以2吗?或任何其他常数。这些数学/步骤让我有点困惑。我知道我可以使用你可能要求黑客快速乘以2 您可以在FP表示中增加指数字段,假设IEEE格式(位23-30) 但是 这不是便携式的 需要位字段操作 不适用于0或非规范化等特殊数字 您可以通过便携式呼叫实现相同的效果,如 x= ldexp(frexp(x, &e), e + 1); 但人们可能会担心函数开销会扼杀任何好处。通常我们将(*)乘以二(2)。你有什么问题?你还打算实现什么?你想找一条更快

有人能告诉我如何将任何单精度浮点数乘以2吗?或任何其他常数。这些数学/步骤让我有点困惑。我知道我可以使用你可能要求黑客快速乘以2

您可以在FP表示中增加指数字段,假设IEEE格式(位23-30)

但是

  • 这不是便携式的
  • 需要位字段操作
  • 不适用于0或非规范化等特殊数字

您可以通过便携式呼叫实现相同的效果,如

x= ldexp(frexp(x, &e), e + 1);

但人们可能会担心函数开销会扼杀任何好处。

通常我们将(*)乘以二(2)。你有什么问题?你还打算实现什么?你想找一条更快的路吗?如果是这样,那么您通常可以将optmization提交给编译器。一个好的编译器将把常数为2的多应用程序转换成左移1。Als是一名程序员——与60年代和70年代不同,现在你不需要费心了。我们可能需要更多的信息,比如语言和目的。因为现在只有*2似乎是答案,但我很怀疑你不知道乘法是*。。那么,真正的问题是什么?请重新中止*(float)2如果它是javaWell,如果您的问题是,正如@SumodhS所建议的,编译器将2作为int,那么您可以强制转换它或使用2.0或2f或2.0f。关于这方面的更多细节,你应该告诉我们你所说的是哪种编程语言。很抱歉。是的,我正试图找到一种方法,通过只使用按位运算符而不使用大小写来操作位,从而乘以常数。我知道我必须使用