3

我编写了一个简单的程序,将 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,但这也是错误的。

你如何分离小数部分中的每个数字。

4

1 回答 1

4

不,这不是你计算的方式......当你从小数点向右移动时。准确性增加。

使用此公式计算 考虑 n 值减少,如 -1 -2 -3 ...

现在十进制值 = 0*2^-1 + 0*2^-2 + 1*2^-3 + 0*2^-4 + 0*2^-5 + 1*2^-6 等直到结束

于 2016-11-18T03:45:02.717 回答