我负责编写一个函数(用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位的整数表示形式。
我知道如何在纸上做。当我尝试对其进行编码时,我对如何存储位进行计算感到困惑。提供的代码仅用于将输入的小数部分转换为二进制。