दिलचस्प पोस्ट
AppDomain का उपयोग सी # में जावास्क्रिप्ट `अपरिभाषित` बनाम` शून्य 0` पता लगाएँ कि एक आउटगोइंग कॉल का उत्तर दिया गया है या नहीं कैसे bitwise और 32 बिट से अधिक लंबे चर पर जावास्क्रिप्ट करने के लिए? कैसे युनिकोड स्ट्रिंग्स के साथ डीजेंगो का काम ठीक से करने के लिए? जांचें कि छवि जावास्क्रिप्ट का उपयोग कर सर्वर पर मौजूद है या नहीं? एंड्रॉइड में बाह्य भंडारण में एक फाइल लिखें jQuery – ऑटो आकार पाठ इनपुट (नहीं textarea!) एंड्रॉइड डायलॉगफ्रैगमेंट बनाम डायलॉग इनलाइन और ब्लॉक कोड स्निपेट के लिए <code> बनाम <पूर्व> बनाम <samp> मैं जावास्क्रिप्ट में एक दो आयामी सरणी कैसे बना सकता हूं? PHP: मर्ज 2 बहुआयामी arrays जहां सत्रस्ट्रॉज और स्थानीयस्टॉरेज संग्रहित है? सीएसएस फ़ाइल में Google वेब फ़ॉन्ट को कैसे आयात करें? XCode 4 "क्लीन" बनाम "स्वच्छ बिल्ड फ़ोल्डर"

64-बिट विंडोज पर थोड़ी सा आकार क्या है?

बहुत पहले नहीं, किसी ने मुझसे कहा कि 64 बिट मशीनों पर 64 बिट नहीं हैं और मुझे हमेशा int उपयोग करना चाहिए। यह मुझे समझ में नहीं आया मैंने डॉक्स (जैसे ऐप्पल की आधिकारिक साइट पर एक) को देखा है कि 64-बिट CPU के लिए संकलन करते long वास्तव में 64 बिट होते हैं मैंने देखा कि यह 64-बिट विंडोज पर था और पाया गया

  • Windows: long और int 32-बिट लंबाई में रहती है, और विशेष नए डेटा प्रकार 64-बिट पूर्णांक के लिए परिभाषित किए जाते हैं।

( http://www.intel.com/cd/ids/developer/asmo-na/eng/197664.htm?page=2 से )

मुझे क्या इस्तेमाल करना चाहिए? क्या मुझे uw तरह कुछ परिभाषित करना चाहिए, sw ((संयुक्त राष्ट्र) पर हस्ताक्षर किए चौड़ाई) long रूप में यदि Windows पर नहीं, और अन्यथा लक्ष्य सीपीयू बिट्स की जाँच करें?

Solutions Collecting From Web of "64-बिट विंडोज पर थोड़ी सा आकार क्या है?"

यूनिक्स दुनिया में, 64-बिट प्लेटफार्मों के लिए पूर्णांक और पॉइंटर्स के आकार के लिए कुछ संभव व्यवस्था थी। इन दोनों का व्यापक रूप से इस्तेमाल किया गया था ILP64 (वास्तव में, केवल इस का बहुत कुछ उदाहरण; क्रे एक ऐसा था) और एलपी 64 (लगभग सभी चीजों के लिए) Acronynms 'आंत से आते हैं, लंबे, संकेतक 64-बिट' और 'लंबा, संकेतक 64-बिट' हैं

 Type ILP64 LP64 LLP64 char 8 8 8 short 16 16 16 int 64 32 32 long 64 64 32 long long 64 64 64 pointer 64 64 64 

आईएलपी 64 प्रणाली को एलपी 64 के पक्ष में छोड़ दिया गया था (अर्थात, लगभग सभी बाद के प्रवेशकों ने एस्पेंन समूह की सिफारिशों के आधार पर एलपी 64 का उपयोग किया था, केवल 64-बिट ऑपरेशन की लंबी विरासत वाले सिस्टम को एक अलग योजना का उपयोग किया गया था)। सभी आधुनिक 64-बिट यूनिक्स सिस्टम LP64 का उपयोग करते हैं MacOS X और Linux दोनों आधुनिक 64-बिट सिस्टम हैं

माइक्रोसॉफ्ट 64-बिट के संक्रमण के लिए एक अलग योजना का उपयोग करता है: एलएलपी 64 ('लंबे समय तक, पॉइंटर्स 64-बिट' हैं) इसका अर्थ है कि 32-बिट सॉफ़्टवेयर को बिना बदलाव के पुनः कंपाइल किया जा सकता है। इसमें जो भी हर कोई करता है उससे अलग होने का दोष है, और 64-बिट क्षमताओं का फायदा उठाने के लिए कोड को संशोधित करने की भी आवश्यकता है हमेशा संशोधन आवश्यक था; यह यूनिक्स प्लेटफार्मों पर आवश्यक लोगों से संशोधनों का एक अलग सेट था।

यदि आप अपने सॉफ़्टवेयर को प्लेटफॉर्म-तटस्थ पूर्णांक प्रकार के नामों के आसपास डिज़ाइन करते हैं, तो संभवत: C99 <inttypes.h> हैडर का उपयोग करते हुए, जो कि जब प्लेटफार्म पर प्रकार उपलब्ध होते हैं, हस्ताक्षरित (सूचीबद्ध) और अहस्ताक्षरित (सूचीबद्ध नहीं) के साथ उपसर्ग 'यू'):

  • int8_t – 8-बिट पूर्णांक
  • int16_t – 16-बिट पूर्णांक
  • int32_t – 32-बिट पूर्णांक
  • int64_t – 64-बिट पूर्णांक
  • uintptr_t – संकेतकों को पकड़ने के लिए पर्याप्त पर्याप्त अहस्ताक्षरित पूर्णांक
  • intmax_t – मंच पर पूर्णांक का सबसे बड़ा आकार ( int64_t से बड़ा हो सकता है)

तब आप इन प्रकारों का उपयोग करके अपने आवेदन को कोडित कर सकते हैं जहां यह मायने रखता है, और सिस्टम प्रकारों से सावधान रहना (जो अलग हो सकता है)। वहाँ एक intptr_t प्रकार है – संकेतक धारण करने के लिए एक हस्ताक्षरित पूर्णांक प्रकार; आपको इसका उपयोग न करने की योजना है, या इसे केवल दो uintptr_t मानों ( ptrdiff_t ) के घटाव के परिणाम के रूप में प्रयोग करना चाहिए।

लेकिन, जैसा कि सवाल (अविश्वास में) बताते हैं, 64-बिट मशीनों पर पूर्णांक डेटा प्रकारों के आकार के लिए अलग-अलग सिस्टम हैं इस्की आद्त डाल लो; दुनिया बदलने नहीं जा रही है

यह स्पष्ट नहीं है कि प्रश्न माइक्रोसॉफ्ट सी ++ कंपाइलर या विंडोज एपीआई के बारे में है। हालांकि, कोई [c ++] टैग नहीं है, इसलिए मुझे लगता है कि यह विंडोज़ एपीआई के बारे में है। कुछ उत्तर लिंक रोट से पीड़ित हैं इसलिए मैं एक और लिंक प्रदान कर रहा हूं जो सड़ांध कर सकता है।


INT , LONG आदि जैसी विंडोज़ एपीआई प्रकारों के बारे में जानकारी के लिए एमएसडीएन पर एक पेज है:

Windows डेटा प्रकार

यह जानकारी विभिन्न विंडोज हेडर फाइलों में भी उपलब्ध है जैसे कि WinDef.h । मैंने कुछ प्रासंगिक प्रकार यहां सूचीबद्ध किए हैं:

 प्रकार |  एस / यू |  x86 |  64
 ---------------------------- + ----- + -------- + ------ -
 बाइट, बुलियन |  यू |  8 बिट |  8 बिट
 ---------------------------- + ----- + -------- + ------ -
 लघु |  एस |  16 बिट |  16 बिट
 यूएसहॉर्ट, WORD |  यू |  16 बिट |  16 बिट
 ---------------------------- + ----- + -------- + ------ -
 INT, लांग |  एस |  32 बिट |  32 बिट
 यूआईएनटी, उलॉन्ग, डीडवर्ड्स |  यू |  32 बिट |  32 बिट
 ---------------------------- + ----- + -------- + ------ -
 INT_PTR, LONG_PTR, LPARAM |  एस |  32 बिट |  64 बिट
 UINT_PTR, यूएलओएनजीटीटीआर, वाराम |  यू |  32 बिट |  64 बिट
 ---------------------------- + ----- + -------- + ------ -
 लांग लाँग |  एस |  64 बिट |  64 बिट
 उलॉन्गॉन्ग, QWORD |  यू |  64 बिट |  64 बिट

स्तंभ "एस / यू" हस्ताक्षरित / अहस्ताक्षरित दर्शाता है

एमएसडीएन पर यह आलेख कई प्रकार के उपनामों (विंडोज पर उपलब्ध) का संदर्भ देता है जो उनकी चौड़ाई के संबंध में थोड़ा अधिक स्पष्ट हैं:

http://msdn.microsoft.com/en-us/library/aa505945.aspx

उदाहरण के लिए, यद्यपि आप 64-बिट अहस्ताक्षरित अभिन्न मूल्य का संदर्भ देने के लिए ULONGLONG का उपयोग कर सकते हैं, आप यूआईएनटी 64 भी उपयोग कर सकते हैं। (ये भी यूलोन्ग और यूआईएनटी 32 के लिए जाता है।) शायद यह थोड़ा स्पष्ट होगा?

माइक्रोसॉफ्ट ने भी ऐसे पूर्णांक के लिए UINT_PTR और INT_PTR परिभाषित किया है जो सूचक के समान आकार हैं।

यहां माइक्रोसॉफ्ट के विशिष्ट प्रकार की एक सूची है – यह उनके ड्राइवर संदर्भ का हिस्सा है, लेकिन मेरा मानना ​​है कि यह सामान्य प्रोग्रामिंग के लिए भी मान्य है।

अपने संकलक / प्लेटफ़ॉर्म के लिए यह जानने का सबसे आसान तरीका:

 #include <iostream> int main() { std::cout << sizeof(long)*8 << std::endl; } 

8 का प्रयोग करके बाइट्स से बिट्स प्राप्त करना है।

जब आपको किसी विशेष आकार की आवश्यकता होती है, तो किसी एक पूर्वनिर्धारित प्रकार के लाइब्रेरी का उपयोग करने में अक्सर आसान होता है। यदि यह अवांछनीय है, तो आप जो अक्सर ऑटोकॉन्फ़ सॉफ़्टवेयर के साथ हो सकते हैं और कॉन्फ़िगरेशन सिस्टम को आवश्यक आकार के लिए सही प्रकार निर्धारित कर सकते हैं।

यदि आपको कुछ लम्बाई के पूर्णांक का उपयोग करने की आवश्यकता है, तो आपको शायद आपकी मदद करने के लिए कुछ प्लेटफ़ॉर्म स्वतंत्र हेडर का उपयोग करना चाहिए बूस्ट को देखने के लिए एक अच्छी जगह है।