C-转换为IEEE浮点数时如何存储位

时间:2018-09-23 22:04:42

标签: c floating-point ieee

我负责编写一个函数(用C语言编写),该函数将浮点值转换为用于浮点表示的IEEE标准。我想我知道如何在纸上进行操作,但是当我尝试编写代码时,我却对如何存储位模式感到困惑。

因此,如果我具有值3948.125(即111101101100.001),因为我将.125乘以2直到完成,那么如何存储存储的0还是1?

0.125 x 2 = 0.25    0
0.25 x 2 = 0.5      0
0.5 x 2 = 1         1
= 0.001

最后,该值必须作为整数返回。

这是转换小数部分的代码的一部分

while(decimal!=0) {
 decimal = decimal * 2;
 if (decimal > 1) {
     //here i would like to store a 1 somewhere
     decimal = decimal - 1;
 } 
 else {
     //I would like to store a 0 somewhere
 }
}

对于另一个示例,该程序的输入将为18.113,而输出应为18.0937500000。我必须转换一个32位浮点值并输出仅使用15位,exp为5位和frac为9位的整数表示形式。

我知道如何在纸上做。当我尝试对其进行编码时,我对如何存储位进行计算感到困惑。提供的代码仅用于将输入的小数部分转换为二进制。

0 个答案:

没有答案