我需要计算此代码后x的值。
Section data
db 0,0,0,0,0,0,0,0x80,0,0x40
Section text
Fld tword [x]
答案应该是 8,但我得到了 3。
Sign: 0
Mantisa: calcukated from the part of 0x40 0 which is 1000000000000000 give us after calculate : 2
然后我们从分数代码中得到 1.5
结果是 1.5 * 2 = 3
首先,你混淆了命名,你所说的尾数是指数。它的编码偏差为 16383。所以你的指数是16384 - 16383 = 1
.有效位数与显式整数位一起存储,因此这也很简单1
。
因此,该数字1 * 2^1 = 2
。这不是你声称的 8。您可以在调试器中检查它:
(gdb) info float
=>R7: Valid 0x40008000000000000000 +2