昨日,风雨交加,气温骤降,所有人都蜷缩在不暖和的厚衣服里,无神的盯着显示器。我也不例外,颤抖的手点击着鼠标,一边埋怨这天气,一边埋怨这电脑。突然,一段代码映入眼帘,定睛一看,没看懂,代码是这样的:
float Q_rsqrt( float number ) { long i; float x2, y; const float threehalfs = 1.5F; x2 = number * 0.5F; y = number; i = * ( long * ) &y; // 这TM是啥 i = 0x5f3759df - ( i >> 1 ); // 这TM又是啥 y = * ( float * ) &i; // 这TM到底是啥 y = y * ( threehalfs - ( x2 * y * y ) ); // 这....... // y = y * ( threehalfs - ( x2 * y * y ) ); // ......... return y; }
这段代码出自《雷神之锤3》,求平方根的倒数,速度号称比通常 求根号,取倒数的计算方法快四倍,我瞬即一愣,不知哪来的热气,包裹着我的身体,驱赶着寒冷,除却了颤抖,凝结在心中的只有一个念头:这TM到底是啥。
好吧,其实在以下只有一句是关键:
i = 0x5f3759df - ( i >> 1 ); // 这TM又是啥
下文将重点分析上面那一句,但是文章嘛,要有开头结尾,好,当我前面都没说,咱们从头再来:
时间: 2024-10-12 15:32:15