क्या है क्या? · bei.pm

यह पाठ स्वचालित रूप से OpenAI GPT-4o Mini द्वारा अनुवादित किया गया है।

इस श्रेणी में फ़ाइल स्वरूपों और रिवर्स इंजीनियरिंग के बारे में लेख हैं।

लेकिन अब ऐसा है:
बाहर कई प्रोग्रामिंग भाषाएँ हैं और कई लोग कुछ चीज़ों को पूरी तरह से अलग नामों से जानते हैं - या तो उनके पास मूलभूत चीज़ों के अस्तित्व की कोई जानकारी नहीं है, क्योंकि उनकी प्रोग्रामिंग भाषा ने उन्हें उस से दूर कर दिया है।

tl;dr:
मेरी संकेतन C99 <stdint.h> के अनुसार है। जो लोग इस संकेतन को समझ सकते हैं, वे मेरी संकेतन को आसानी से समझेंगे।

पूर्णांक

Integer सरल शब्दों में पूर्णांक हैं, अर्थात् बिना दशमलव भाग के संख्याएँ।

इसके अलावा, Integer आमतौर पर डेटा प्रारूपों में एक निश्चित संख्यात्मक स्पेक्ट्रम के भीतर, लगभग एक संकल्प के रूप में परिभाषित होते हैं। मैं इसे बिट में देता हूँ - क्योंकि "बाइट" और उस पर आधारित प्रकार (वर्ड, क्यूवर्ड, ...) आमतौर पर प्लेटफार्म-निर्भर होते हैं।

अतिरिक्त रूप से, Integer प्रकारों में प्राकृतिक संख्याओं (ℕ, अर्थात्, बिना चिह्न के - Unsigned) और पूर्ण संख्याओं (ℤ, अर्थात्, चिह्न के साथ - Signed) के बीच भी अंतर किया जाता है।
यह जानकारी पहचानकर्ता में एक चिह्न (u या s) के माध्यम से स्पष्ट होती है।

इसमें यह संभव है कि चिह्नित पूर्णांक को या तो एक्स के पूरक के रूप में दर्शाया जाए या दो के पूरक के रूप में।
जब तक अन्यथा निर्दिष्ट नहीं किया गया है, दो के पूरक का उपयोग किया जाता है, क्योंकि यह आधुनिक कंप्यूटर विज्ञान में पसंदीदा रूपांतरण है।

मैं अपने दस्तावेजों में चिह्न रहित संख्याओं को uint के रूप में निर्दिष्ट करता हूँ, इसके बाद सटीकता बिट्स में दी जाती है।
चिह्नित संख्याओं को मैं अपने दस्तावेजों में sint के रूप में निर्दिष्ट करता हूँ, इसी तरह सटीकता बिट्स में दी जाती है।

मैं "चार" डेटा प्रकार का उपयोग नहीं करता हूँ, क्योंकि वर्ण-श्रृंखलाएँ आमतौर पर केवल विशेष व्याख्या के साथ पूर्णांक मानों की श्रृंखलाएँ होती हैं।
इन्हें इसलिए uint(8)[] के रूप में दर्शाया जाता है।

उदाहरण:

नोटेशन C99 stdint.h-समकक्ष विवरण संख्यात्मक क्षेत्र
uint(16) uint16_t अनसाइनड इंटीजर, 16 बिट लंबाई 0 - 65,535
sint(8) int8_t साइनड इंटीजर, 8 बिट लंबाई, द्विआधारी पूरक -126 - 127
uint(24) uint32_t:24 अनसाइनड इंटीजर, 24 बिट लंबाई 0 - 16,777,216

स्थायी दशमलव मान

स्थिर-नुक्ता मान वे संख्याएँ हैं जो गणितीय संख्याओं (Q) के स्पेक्ट्रम से आती हैं, जो कि एक नुक्ता और नुक्ता के बाद की स्थानों के साथ होती हैं।

स्थिर-नुक्ता मानों में - इसी कारण से इसे ऐसा नाम दिया गया है - नुक्ता की स्थिति डेटा प्रकार द्वारा निश्चित रूप से निर्धारित होती है।
इससे इस डेटा प्रकार के लिए संख्याओं की एक निश्चित सीमा बनती है; गणितीय रूप से कहा जाए तो संख्याओं की सीमा सीमित होती है।

वास्तव में, इस डेटा प्रकार का उपयोग मुख्य रूप से उन प्लेटफार्मों पर किया जाता है जहाँ पर्याप्त तेज फ्लोटिंग-पॉइंट हार्डवेयर यूनिट नहीं होता है, क्योंकि स्थिर-नुक्ता मानों की गणना पूर्णांक इकाइयों द्वारा की जा सकती है।

यह डेटा प्रकार उदाहरण के लिए डेटाबेस प्रबंधन प्रणालियों द्वारा उपयोग किया जाता है, जब निश्चित आवश्यकताओं को पूरा करना आवश्यक होता है।
यहाँ उदाहरण के लिए वित्तीय डेटा के स्थायी संग्रहण के लिए प्रणालियों पर विचार किया जा सकता है; अधिकांश मुद्राएँ नुक्ता के बाद 2 स्थानों तक सीमित होती हैं। (हालांकि इसके लिए स्थिर-नुक्ता मान लेना समझदारी नहीं है; इसके बजाय, सबसे छोटी मुद्रा इकाई को पूर्णांक के रूप में सीधे संग्रहीत करना और बाकी की प्रस्तुति स्तर को छोड़ देना अधिक बुद्धिमान होगा)

पूर्णांक प्रदर्शनों के अनुरूप, मैं स्थिर-नुक्ता मानों में नुक्ता से पहले और बाद की संख्या की संकल्पना करता हूँ:
ufixed(9,7) एक डेटा प्रकार को दर्शाता है, जो बिना संकेत के 9 बिट नुक्ता से पहले के मान के लिए और 7 बिट नुक्ता के बाद के मान के लिए आरक्षित करता है; इससे कुल 16 बिट चौड़ाई होती है और इस प्रकार, उदाहरण के लिए, दो स्वतंत्र पूर्णांक के वेक्टर के रूप में (0,0) से (511,127) के क्षेत्र को कवर कर सकता है।
हालांकि, यह व्याख्या अपनी दशमलव प्रस्तुति में 28 संख्याएँ बेकार छोड़ देगी, क्योंकि व्यवहार में शायद अधिकतम (511,99) पर सीमित रहना होगा।

स्थिर-नुक्ता मान को 2 अलग-अलग पूर्णांकों के वेक्टर के रूप में प्रत्यक्ष व्याख्या करने के बजाय - जो हमेशा दशमलव संख्याओं में परिवर्तन करते समय एक बेकार डेटा क्षेत्र का निर्माण करता है और एक मैनुअल कैरी को दर्शाता है - इसके बजाय नुक्ता के बाद का क्षेत्र उनकी कुल संकल्पना के रूप में भिन्न के रूप में व्याख्यायित किया जा सकता है।
उदाहरण के लिए, ufixed(9,7) के मामले में, इस प्रकार एक भिन्न 27 के रूप में प्राप्त होता है - संख्याओं का क्षेत्र 0.00 से 511 + 126127 तक होता है। दशमलव प्रस्तुति में परिवर्तन के लिए, नुक्ता के बाद का मान 128 से विभाजित होना चाहिए।
इस वैरिएंट के साथ गणना संचालन करना आसान होता है, क्योंकि कैरी अपने आप उत्पन्न होता है, जिससे यह वैरिएंट सामान्यतः प्राथमिकता प्राप्त करता है
हालांकि, इस वैरिएंट का एक नुकसान है कि दशमलव प्रस्तुति में नुक्ता के बाद के स्थान अब एक गारंटीकृत संकल्पना नहीं रखते, एक एकल दशमलव स्थान अब 0.01 का मूल्य नहीं रखता, बल्कि 0.007874 रखता है, जो संबंधित राउंडिंग त्रुटियों के लिए कारण बनेगा।

कौन सी व्याख्या का उपयोग किया जाता है, इसे उपयोग के स्थान पर प्रलेखित किया जाता है।

फ्लोटिंग पॉइंट या ग्लीटिंग पॉइंट मान

फ्लोटिंग-पॉइंट मान गणितीय रूप से अधिक जटिल अभिव्यक्तियाँ हैं, जिनमें एक निश्चित संकल्प के साथ पूर्णांक को एक गणितीय पद के माध्यम से इस प्रकार व्यक्त किया जाता है कि प्रभावी रूप से दशमलव भाग को शिफ्ट करके बनाया जाता है - और इस प्रकार सीधे वैज्ञानिक नोटेशन से संबंधित होता है।
इसे लागू करने का सबसे सामान्य तरीका IEEE 754 के साथ मानकीकृत किया गया है और तब से अंतरराष्ट्रीय स्तर पर स्वीकार किया गया है।

एक फ्लोटिंग-पॉइंट मान आम तौर पर निम्नलिखित घटकों से बना होता है:

संकेत (0 या 1) घातांक मैन्टिस

जबकि संकेत को बाइनरी हाँ/नहीं जानकारी के रूप में सरलता से निकाला जा सकता है, वास्तविक संख्या निम्नलिखित समीकरण के माध्यम से बनती है:
मैन्टिस * 2घातांक

इसके अतिरिक्त, कुछ स्थिर मान भी होते हैं, जो विशेष मामलों परिमाणिक संख्याओं को कवर करते हैं - जिनमें ±∞ और NaN ("कोई मान्य संख्या नहीं") शामिल हैं।

फ्लोटिंग-पॉइंट मान विशेष रूप से तब उपयोगी होते हैं जब सटीकता इतनी महत्वपूर्ण नहीं होती, क्योंकि इस प्रकार के मानों के साथ अनिवार्यतः राउंडिंग त्रुटियाँ और इस प्रकार सटीकता में हानि होती है। आमतौर पर, फ्लोटिंग-पॉइंट मानों का उपयोग उदाहरण के लिए समन्वय की परिभाषा के लिए किया जाता है, जैसे 3D मॉडलों में वर्टेक्स वेक्टर या ऑप्टिकल प्रतिनिधित्व उद्देश्यों के लिए बेज़ियर/स्प्लाइन वक्रों में।

डेटा प्रारूपों में, फ्लोटिंग-पॉइंट मानों को float(मैन्टिस, घातांक) के रूप में निर्दिष्ट किया जाता है।
यदि IEEE 754 से भिन्न प्रारूप का उपयोग किया जाता है, तो इसे तदनुसार निर्दिष्ट किया जाएगा।