0

MASM のアセンブリでの変数の初期化について質問があります。

2^32 を変数に初期化する方法と、初期化する必要がある変数の種類を教えてください。DWORD または REAL4?

私はそれを次のようにしようとします:

val DWORD 2.0E+32

var をレジスタに割り当てて (mov eax,val など)、値を書き込もうとすると、2^32 ではない値が表示されます。REAL4型でもやってみました。結果はまだ同じです。

ここで私が間違っていることは何ですか?

前もって感謝します...

4

2 に答える 2

3

2^32 = 4294967296 = 0x100000000 (8 つのゼロ)。

2.0E+32は 2 * 10^32 = 20000000000000000000000000000000 であり、まったく異なる数値です。これも浮動小数点数0x100000000ですが、 は整数です。

于 2008-11-18T05:54:36.673 に答える
2

2 ^ 32は、dwordがサポートする数値よりも少し大きい数値です。いくつかの範囲でスローします。

0 <= dword < 2^32
0 <= qword < 2^64
-2^31 <= sdword < 2^31
-2^63 <= sqword < 2^63

REAL4が4バイトの浮動小数点である場合、整数の構造とは完全に異なる構造になります。x86を使用する場合、フローティングポイントが表される形式はおそらくIEEE754です。これは2^32の数値をサポートしますが、精度の問題が発生する可能性があります。

于 2008-11-18T06:05:06.417 に答える