我编写了一个简单的程序,将 pi 加载到 8087 中的寄存器堆栈的顶部,然后将该常量返回到一个短的实内存变量中。
FLDPI ;load pi
FSTP DWORD PTR shortReal ;store pi in memory, then pop stack
shortReal 中存储的值是 40 49 0F DB hex。这转换为二进制的 0100000001001001111111011011。
第一位是 0,所以它是一个正数。有偏的指数部分转换为 1。
因此,实际数字如下所示:
1(隐含点)10010010000111111011011
1(隐含点)1 转换为 3. ,所以这是 PI 的正确整数部分,但我的理解在这一点之后就崩溃了。
现在剩下以下数字:
0010010000111111011011
001 可以转换为 1,这是正确的。但是,这意味着下一个数字将是 001,它又是 1,这是错误的,或者它可能是 0010,它等于 2,但这也是错误的。
你如何分离小数部分中的每个数字。