2012-03-02 7 views
5

मैं देख रहा हूँ कुछ भौतिक पता संरचना इस तरह परिभाषित किया गया है:क्यों भौतिक पता संरचना का उच्च भाग हस्ताक्षरित प्रकार के रूप में परिभाषित किया गया है?

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

मुझे समझ नहीं आता क्यों उच्च भाग पर हस्ताक्षर किए प्रकार के रूप में परिभाषित किया गया है ... किसी को भी एक स्पष्टीकरण दे सकते हैं?

उत्तर

5

इस पर गणित बनाने के लिए संख्या पर हस्ताक्षर किए गए हैं और अधिक समझदारी है। यदि आप 456 से पता 123 को घटाते हैं, तो आपको पता 333 प्राप्त करने की उम्मीद है, है ना? तो यदि आप 123 से 456 घटाते हैं, तो आप -333 प्राप्त करने की उम्मीद करते हैं, 18,446,744,073,709,551,283 नहीं, है ना? यही कारण है कि पते पर हस्ताक्षर किए गए हैं।

कारण केवल उच्च भाग पर हस्ताक्षर किया गया है कि केवल संख्या में एक संकेत बिट है, और यह हमेशा उच्चतम (सबसे महत्वपूर्ण) बिट होता है।

+0

'लोपार्ट' और 'हाईपार्ट' 64-बिट पते के दो हिस्सों हैं। इसे 64-बिट हस्ताक्षरित पूर्णांक के रूप में मानते हुए, केवल एक साइन बिट है, और यह उच्च भाग में है। अभ्यास में, पूर्ण 64-बिट एड्रेस स्पेस (16 एक्साबाइट्स) का केवल एक छोटा सा अंश उपलब्ध होगा। \ –

+0

पता स्थान का आधा नकारात्मक है ... तो क्या वे बर्बाद हो गए हैं? नतीजे यह सुनिश्चित करने के लिए कि कौन सा परिणाम सकारात्मक है, जांचने से पहले कौन सा ऑपरेंड बड़ा है? अंकगणित एकमात्र कारण है? – solotim

+0

@ सोलोटीम: "ऋणात्मक" बर्बाद नहीं होते हैं। सीपीयू परवाह नहीं है अगर सूचक "ऋणात्मक" है - यह सिर्फ उच्च बिट सेट है देखता है। – Gabe

संबंधित मुद्दे

 संबंधित मुद्दे