Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Floating point 将IEEE 754的浮点转换为十六进制的最简单方法_Floating Point_Ieee 754 - Fatal编程技术网

Floating point 将IEEE 754的浮点转换为十六进制的最简单方法

Floating point 将IEEE 754的浮点转换为十六进制的最简单方法,floating-point,ieee-754,Floating Point,Ieee 754,有人能解释一下执行上述操作的分步程序吗?以下是针对IEEE-754基本32位二进制浮点的,从四舍五入到四舍五入到偶数的关系: 从输入数字x开始。 如果x为0,则为0生成0x00000000并停止。 将e设置为0。 如果为0,则将s设置为0≤ 如果x

有人能解释一下执行上述操作的分步程序吗?

以下是针对IEEE-754基本32位二进制浮点的,从四舍五入到四舍五入到偶数的关系:

从输入数字x开始。 如果x为0,则为0生成0x00000000并停止。 将e设置为0。 如果为0,则将s设置为0≤ 如果x<0,则为x或1,并将x设置为| x |。 重复2次≤ x:将x除以2,然后将1加到e。 当x<1时重复:将x乘以2,并从e中减去1。 将x乘以223。 如果e<−126,x除以2−126−e并将e设置为−126 如果x的分数部分小于½,则将其更改为0。 如果x的分数部分大于½,则将其更改为0,并将1添加到f。 如果x的分数部分为½,则将其更改为0。然后,如果x是奇数,则将1与x相加。 将x除以223。 如果2≤ x、 将f除以2,并将1加到e。 如果127以上内容来自内存,未经测试,因此应再次检查。

不仅不清楚您在问什么,我认为最近发布的一个问题也提出了类似的问题:。类匹配?如果您正在为+inf打印0x7f800000,那么这是否应该是以十六进制打印二进制32位模式的算法,而不将其键入punning为整数?所以不是一个十六进制浮点数什么的。顺便说一句,我想你在顶部的特殊情况下错过了-0.0。我想是第二步。在对比较结果中的s进行解码之前,如果x==0.0,而不是0,则产生s@PeterCordes:输入为实数,因此−0是0。@PeterCordes:同样,输出是IEEE-754编码,用于将输入转换为最接近的可表示值。在最近的一个副本中,作者说这是为了准备测试,所以我认为输入是实数,而不是C中的浮点或其他什么。我应该更明确地说明输入和输出,但无论如何我不应该写这篇文章——我还有其他事情要做。我忍不住要把它放出来。哦,你不是想在十六进制输出中保留+-0.0?我会尽量用signbit之类的函数保存您可以保存的内容。NaN有效载荷显然更难。但如果你假装输入的是实数,而不是像这个问题所要求的IEEE754值,那么这是有道理的。