2008-09-02 7 views
40

विजुअल सी ++ में एक ड्वॉर्ड बस एक हस्ताक्षरित लंबा है जो मशीन, प्लेटफॉर्म और एसडीके निर्भर है। हालांकि, चूंकि DWORD एक डबल शब्द है (वह 2 * 16 है), 64-बिट आर्किटेक्चर पर अभी भी एक DWORD 32-बिट है?32- और 64-बिट कोड के साथ एक DWORD कितना बड़ा है?

+6

एक डीडब्ल्यूओआर मशीन, मंच, न ही एसडीके निर्भर है। –

+0

यह एक नाइटपिक है लेकिन तकनीकी रूप से यह प्रश्न या तो सी या सी ++ पर लागू होता है, तो सी ++ टैग को हटाने या सी टैग जोड़ने के लिए बेहतर हो सकता है, लेकिन मुझे यकीन नहीं है कि कौन सा बेहतर है। – jrh

उत्तर

51

दरअसल, 32-बिट कंप्यूटर पर एक शब्द 32-बिट होता है, लेकिन डीडब्ल्यूओआर प्रकार 16-बिट के अच्छे पुराने दिनों से बचे हुए है।

नए सिस्टम में बंदरगाह कार्यक्रमों को आसान बनाने के लिए, माइक्रोसॉफ्ट ने तय किया है कि सभी पुराने प्रकार आकार बदल नहीं पाएंगे।

आप आधिकारिक सूची यहाँ पा सकते हैं: http://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx

सभी मंच पर निर्भर प्रकार है कि _PTR के साथ समाप्त 64-बिट के लिए 32-बिट से संक्रमण के साथ बदल (DWORD_PTR 32- पर 32-बिट हो जाएगा 64-बिट विंडोज़ पर बिट विंडोज और 64-बिट)।

+0

वास्तविक श्रेणियां सूचीबद्ध हैं [यहां] (https://msdn.microsoft.com/en-us/library/s3f49ktz.aspx)। –

+0

@LaurieStearn मुझे लगता है कि यह आलेख उन डेटा प्रकारों के बारे में है जो माइक्रोसॉफ्ट कंपाइलर्स आंतरिक रूप से उपयोग करते हैं, न कि Winapi डेटा प्रकार जैसे 'DWORD'। – jrh

+1

हाँ, उत्तर के लिंक [आधिकारिक सूची] में लेख (https://msdn.microsoft.com/en-us/library/aa383751 (VS.85) .aspx) अब श्रेणियां हैं: उद्धरण: ** DWORD: एक 32-बिट हस्ताक्षरित पूर्णांक। सीमा 0 9 4249672 9 5 दशमलव के माध्यम से 0 है। ** –

3

नहीं ... सभी विंडोज प्लेटफॉर्म पर ड्वॉर्ड 32 बिट्स है। लंबे समय तक या LONG64 64 बिट प्रकार के लिए प्रयोग किया जाता है। ,

typedef unsigned long  DWORD; 

हालांकि MSDN के अनुसार:

+0

इसका विंडोज़ के साथ कुछ लेना देना नहीं है, यह इंटेल टर्म – Abyx

+2

@ एबीएक्स: टाइपपीफ 'ड्वॉर्ड' बहुत विंडोज है। – rubenvb

+2

@ रुबेनवब, ओह और इसे 'ड्वॉर्ड' क्यों कहा जाता है और कुछ और नहीं 'क्यूबीटीईई' या 'डीयूबीडब्ल्यूडी'? – Abyx

14

यह रूप में परिभाषित किया गया है

32-बिट प्लेटफार्मों पर, लंबा है पूर्णांक का पर्याय बन गया।

इसलिए, डीडब्ल्यूओआर 32 बिट ऑपरेटिंग सिस्टम पर 32 बिट है। 64 बिट DWORD के लिए एक अलग परिभाषा है:

typdef unsigned _int64 DWORD64; 

आशा है कि मदद करता है।

-2

:) आधुनिक प्रोसेसर पर शब्द 32-बिट या 64-बिट है। यह बस मेमोरी पॉइंटर की लंबाई है (जो बदले में एएलयू की क्षमता है)।

लेकिन ऐतिहासिक रूप से x86 "शब्द" 16 बिट्स (32 के बजाय) है। इस प्रकार माइक्रोसॉफ्ट पुस्तकालय जो ऐतिहासिक रूप से x86 को लक्षित करते हैं, डीडब्ल्यूओआर को बिना हस्ताक्षर किए गए लंबे समय के रूप में परिभाषित करते हैं i.e. "मशीन पॉइंटर आकार"।

यह सभी बच्चे हैं। भविष्य के संदर्भ के लिए Wikipedia देखें।

+1

(1) यह गलत विकिपीडिया पृष्ठ का एक लिंक है। (2) प्रश्न कंप्यूटर आर्किटेक्चर शब्द के बारे में नहीं है, यह माइक्रोसॉफ्ट के 'ड्वॉर्ड' प्रकार के बारे में है। –

+0

http://en.wikipedia.org/wiki/Word_(computer_architecture) "उदाहरण के लिए, माइक्रोसॉफ्ट के विंडोज एपीआई वर्ड की प्रोग्रामिंग भाषा परिभाषा को 16 बिट्स के रूप में रखता है, इस तथ्य के बावजूद कि एपीआई 32- या 64 पर उपयोग किया जा सकता है -bit x86 प्रोसेसर, जहां मानक शब्द का आकार क्रमशः 32 या 64 बिट होगा। " –

-4

कॉल एक लंबे, dword32, dword64 ... जो भी आप चाहते हैं, लेकिन एक बाइट में 8 बिट एक शब्द 2 बाइट्स एक DWORD (डबल शब्द) 2 शब्द एक QWORD (ट्रैक्टर शब्द) 4 है है शब्द

32 या 64 बिट सिस्टम पर लंबी या INT तरह उपनाम भिन्न हो सकते हैं, लेकिन एक DWORD अभी भी एक डबल शब्द

+4

माइक्रोसॉफ्ट 'वर्ड' को 2 बाइट्स मानता है, एक 'DWORD' 4 बाइट्स और एक' QWORD' 8 बाइट्स होना चाहिए। –

-1

8 बिट एक बाइट है। 2 बाइट एक शब्द है। डबल शब्द या DWORD 4 बाइट्स या 2 शब्द है।

+1

एक शब्द की लंबाई प्रोसेसर-निर्भर है। डीडब्ल्यूओआरड का नाम वापस रखा गया था जब 2-बाइट शब्द 16-बिट प्रोसेसर मानक थे। माइक्रोसॉफ्ट ने 32-बिट और उच्च प्रोसेसर पर जाने पर लंबाई को बदलने का फैसला नहीं किया। – Ben

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