快速平方根逆算法中第一种类型校正的确切值是多少?

杰西克·杜申科(Jacek Duszenko)

有了这段代码(这是Quake 3中使用的众所周知的快速平方根逆算法),我无法理解打印输出。我从表面上了解了整个算法,但希望获得深入的了解。什么i时候printf打印有什么价值这给我1120403456。是否取决于计算机的体系结构?我读过某处这样的类型操纵会导致不确定的行为。在另一个网站上,我读到了那时的值i是此变量使用的位的确切值。我对此感到困惑,并且诚实地期望值i为100。如何解释结果1120403456?如何将此值转换为十进制100?这些位是以某种方式编码的吗?这是代码摘录:

#include<stdio.h>

int main()
{
float x = 100;
float xhalf = 0.5f*x;
int i = *(int*)&x;
printf("%d", i);
i = 0x5f3759df - (i>>1);
x = *(float*)&i;
x = x*(1.5f-xhalf*x*x);
return x;

}

基里尔

iafter的值int i = *(int*)&x;是浮点数的位表示形式100.0,即x的初始值。由于您使用的是%d格式,printf因此会将其表示形式打印为十进制整数。

的位模式100.0在IEEE 32位float0x42c80000,这是1120403456在十进制

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何获得Python中的负十进制数的小数平方根是多少?

为什么-Infinity +无限的Java中的平方根是多少?

如何在Java中实现“快速逆平方根”?

如何解决错误“二进制运算符'> ='的错误操作数类型,第一种类型:int []第二种类型int”

JMH中的确切操作次数是多少?

在多步模态中显示第一种形式

快速整数平方根逼近

实体框架数据库中存储过程的第一种方法

仅指定第一种类型的参数

如何在CSS中定位两种可能的类型中的第一种

dbsm中的第一种形式规范化

在模板中使用第一种类型的类成员的类型

Java中的平方根和平方根

在TensorFlow.js中引导第一种格式

c中“”中的值的确切返回值是多少?是指针吗?

Arraylist有两种类型:如何确定第一种类型?

Windows中平方根符号(√)的ASCII(Alt +数字)是多少?

RichTextBox控件仅使用第一种格式

快速测试一种类型是否与另一种类型兼容

删除按钮的第一种背景色

一种算法来找到添加到卡充值的确切金额

Oracle 中某个字段的确切 NULL 值是多少?

如何从第一种形式的选定行中过滤另一种形式的表格?

unsigned long 的确切值范围是多少?

跳过实体框架 6 代码第一种子中的标识号

这些函数在 Big-O 中的确切运行时间是多少

c ++中long double的确切范围是多少?

现在还值得在 x86-64 上使用 Quake 快速逆平方根算法吗?

为什么我得到二进制类型'!='第一种类型char,第二种类型<nulltype>的错误操作数类型