我正在为学校做一个项目,项目的一部分是从文件中读取整数和浮点数(格式为( - )9.999E +/- 99),解析它们就是这样以正确的格式而不是ASCII字符存储,然后对它们执行某些操作。我已经得到了整数,但我不确定从浮点数开始。
部分项目描述表明浮点数必须转换为单精度IEEE浮点表示。我想知道我是否需要做额外的工作才能以这种格式获得它们。
例如,假设我将一个整数加载到堆栈并找到倒数:
fild qword [num]
fld1
fdivr
目前在堆栈顶部的数字是如何格式化的?单精度IEEE格式的值是多少?或者以其他方式表示浮点数? 基本上,我是否可以逐个读取字符串中的每个数字,按“E”后的数字进行一些缩放并将其添加到一起,或者如果我必须执行一些位字符串操作来查找符号bit,biased exponent和significand,然后以某种方式将它们连接在一起。
另外,我不允许使用C函数,所以fscanf不是一个选项。
在此先感谢,我很感激你能给我的任何帮助!
答案 0 :(得分:2)
在内部,CPU以80位扩展格式保存FP堆栈上的值,但它可以将值存储(和加载)为单精度浮点数或双精度浮点数(等等)。