【发布时间】:2015-01-04 17:15:54
【问题描述】:
我发现了一个非常复杂的函数,这是快速平方根平方根的实现。老实说,我不明白这个函数是如何工作的,但是 long 和 float 之间的以下转换引起了我的注意:
i = *(long *) &y;
我留下完整的代码
inline float Q_rsqrt(float number)
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
i = *(long *) &y;
i = 0x5f3759df - (i >> 1);
y = * (float *) &i;
y = y * (threehalfs - (x2 * y * y));
return y;
}
【问题讨论】:
-
@AShelly:就个人而言,我不认为这是重复的。这是一个非常狭隘的问题。
标签: c casting floating-point bit-manipulation