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

sol*_*tim 5 c windows

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

typedef union {
   struct {
       ULONG LowPart;
       LONG HighPart;
   } u;
   LONGLONG QuadPart;
} PHYSICAL_ADDRESS;
Run Code Online (Sandbox Code Playgroud)

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

Gab*_*abe 5

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

只签署高部分的原因是一个数字只有一个符号位,它始终是最高(最重要)的位.