我看到一些物理地址结构定义如下:
typedef union {
struct {
ULONG LowPart;
LONG HighPart;
} u;
LONGLONG QuadPart;
} PHYSICAL_ADDRESS;
我不明白为什么高部分被定义为有符号类型......任何人都可以解释一下吗?
答案 0 :(得分:5)
这个数字是签名的,使数学更有意义。如果你从456中减去地址123,你希望获得地址333,对吧?所以,如果你从123中减去456,你预计得到-333,而不是18,446,744,073,709,551,283,对吗?这就是地址签名的原因。
只有高位部分被签名的原因是一个数字只有一个符号位,并且它始终是最高(最重要)位。