为什么物理地址结构的高部分被定义为有符号类型?

时间:2012-03-02 03:31:21

标签: c windows

我看到一些物理地址结构定义如下:

typedef union {
   struct {
       ULONG LowPart;
       LONG HighPart;
   } u;
   LONGLONG QuadPart;
} PHYSICAL_ADDRESS;

我不明白为什么高部分被定义为有符号类型......任何人都可以解释一下吗?

1 个答案:

答案 0 :(得分:5)

这个数字是签名的,使数学更有意义。如果你从456中减去地址123,你希望获得地址333,对吧?所以,如果你从123中减去456,你预计得到-333,而不是18,446,744,073,709,551,283,对吗?这就是地址签名的原因。

只有高位部分被签名的原因是一个数字只有一个符号位,并且它始终是最高(最重要)位。