पूर्णांक (कंप्यूटर विज्ञान): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{short description|Datum of integral data type}}
{{short description|Datum of integral data type}}
कंप्यूटर विज्ञान में, एक [[पूर्णांक]] अभिन्न [[आंकड़े]] प्रकार का एक डेटा है, एक [[डेटा प्रकार]] जो गणितीय पूर्णांकों के कुछ [[अंतराल (गणित)]] का प्रतिनिधित्व करता है। अविभाज्य डेटा प्रकार विभिन्न आकारों के हो सकते हैं और ऋणात्मक मान रखने की अनुमति हो भी सकती है और नहीं भी हो सकती हैं। पूर्णांकों को सामान्यतः कंप्यूटर में बाइनरी अंकों (बिट्स) के समूह के रूप में दर्शाया जाता है। समूहीकरण का आकार भिन्न होता है इसलिए उपलब्ध पूर्णांक आकारों का सेट विभिन्न प्रकार के कंप्यूटरों के बीच भिन्न होता है। कंप्यूटर हार्डवेयर लगभग हमेशा प्रोसेसर रजिस्टर या मेमोरी पता को पूर्णांक के रूप में प्रस्तुत करने की एक विधि प्रदान करती है।
कंप्यूटर विज्ञान में, एक [[पूर्णांक]] अभिन्न [[आंकड़े]] प्रकार का एक डेटा है, एक [[डेटा प्रकार]] जो गणितीय पूर्णांकों के कुछ [[अंतराल (गणित)]] का प्रतिनिधित्व करता है। अविभाज्य डेटा प्रकार विभिन्न आकारों के हो सकते हैं और ऋणात्मक मान रखने की अनुमति हो भी सकती है और नहीं भी हो सकती हैं। पूर्णांकों को सामान्यतः कंप्यूटर में बाइनरी अंकों (बिट्स) के समूह के रूप में दर्शाया जाता है। समूहीकरण का आकार भिन्न होता है इसलिए उपलब्ध पूर्णांक आकारों का समुच्चय विभिन्न प्रकार के कंप्यूटरों के बीच भिन्न होता है। कंप्यूटर हार्डवेयर लगभग हमेशा प्रोसेसर रजिस्टर या मेमोरी पता को पूर्णांक के रूप में प्रस्तुत करने की एक विधि प्रदान करती है।


== मान और प्रतिनिधित्व ==
== मान और प्रतिनिधित्व ==
Line 11: Line 11:
द्विआधारी अंक प्रणाली का उपयोग करते हुए, एक सकारात्मक पूर्णांक का सबसे सामान्य प्रतिनिधित्व [[अंश|बिट्स]] की एक स्ट्रिंग है। बिट्स को संग्रहीत करने वाली मेमोरी [[बाइट]] का क्रम भिन्न होता है; [[endianness|एंडियननेस]] देखें। एक अभिन्न प्रकार की चौड़ाई या शुद्धता इसके प्रतिनिधित्व में बिट्स की संख्या है। एन बिट्स के साथ एक अभिन्न प्रकार 2<sup>n</sup> संख्याएं को सांकेतिक शब्दों में बदल सकता है; उदाहरण के लिए एक अहस्ताक्षरित प्रकार सामान्यतः गैर-ऋणात्मक मान 0 से 2<sup>''n''</sup>−1 का प्रतिनिधित्व करता है। बिट पैटर्न के पूर्णांक मानों के अन्य एन्कोडिंग कभी-कभी उदाहरण के लिए [[बाइनरी-कोडित दशमलव]] या [[ग्रे कोड]], या मुद्रित वर्ण कोड जैसे [[ASCII|एएससीआईआई]] के लिए उपयोग किए जाते हैं।
द्विआधारी अंक प्रणाली का उपयोग करते हुए, एक सकारात्मक पूर्णांक का सबसे सामान्य प्रतिनिधित्व [[अंश|बिट्स]] की एक स्ट्रिंग है। बिट्स को संग्रहीत करने वाली मेमोरी [[बाइट]] का क्रम भिन्न होता है; [[endianness|एंडियननेस]] देखें। एक अभिन्न प्रकार की चौड़ाई या शुद्धता इसके प्रतिनिधित्व में बिट्स की संख्या है। एन बिट्स के साथ एक अभिन्न प्रकार 2<sup>n</sup> संख्याएं को सांकेतिक शब्दों में बदल सकता है; उदाहरण के लिए एक अहस्ताक्षरित प्रकार सामान्यतः गैर-ऋणात्मक मान 0 से 2<sup>''n''</sup>−1 का प्रतिनिधित्व करता है। बिट पैटर्न के पूर्णांक मानों के अन्य एन्कोडिंग कभी-कभी उदाहरण के लिए [[बाइनरी-कोडित दशमलव]] या [[ग्रे कोड]], या मुद्रित वर्ण कोड जैसे [[ASCII|एएससीआईआई]] के लिए उपयोग किए जाते हैं।


बाइनरी कंप्यूटिंग सिस्टम में [[हस्ताक्षरित संख्या प्रतिनिधित्व|हस्ताक्षरित संख्याओं का प्रतिनिधित्व]] करने के चार प्रसिद्ध विधियाँ हैं। सबसे सामान्य दो का पूरक है, जो एन बिट्स के साथ एक हस्ताक्षरित अभिन्न प्रकार को -2<sup>(n−1)</sup> से 2<sup>(n−1</sup>)−1 संख्याओं का प्रतिनिधित्व करने की अनुमति देता हैं। दो का पूरक अंकगणित सुविधाजनक है क्योंकि एक पूर्ण आक्षेप है | निरूपण और मानों (विशेष रूप से, कोई अलग +0 और -0 नहीं) के बीच एक-से-एक सही पत्राचार नहीं है, और क्योंकि जोड़, [[घटाव]] और [[गुणा]] को हस्ताक्षरित और अहस्ताक्षरित प्रकारों के बीच अंतर करने की आवश्यकता नहीं है। अन्य संभावनाओं में [[ऑफसेट बाइनरी]], [[साइन-परिमाण]] और लोगों का पूरक शामिल हैं।
बाइनरी कंप्यूटिंग प्रणाली में [[हस्ताक्षरित संख्या प्रतिनिधित्व|हस्ताक्षरित संख्याओं का प्रतिनिधित्व]] करने के चार प्रसिद्ध विधियाँ हैं। सबसे सामान्य दो का पूरक है, जो एन बिट्स के साथ एक हस्ताक्षरित अभिन्न प्रकार को -2<sup>(n−1)</sup> से 2<sup>(n−1</sup>)−1 संख्याओं का प्रतिनिधित्व करने की अनुमति देता हैं। दो का पूरक अंकगणित सुविधाजनक है क्योंकि एक पूर्ण आक्षेप है | निरूपण और मानों (विशेष रूप से, कोई अलग +0 और -0 नहीं) के बीच एक-से-एक सही पत्राचार नहीं है, और क्योंकि जोड़, [[घटाव]] और [[गुणा]] को हस्ताक्षरित और अहस्ताक्षरित प्रकारों के बीच अंतर करने की आवश्यकता नहीं है। अन्य संभावनाओं में [[ऑफसेट बाइनरी|ऑफसमुच्चय बाइनरी]], [[साइन-परिमाण]] और लोगों का पूरक शामिल हैं।


कुछ कंप्यूटर भाषाएँ पूर्णांक आकार को मशीन-स्वतंत्र विधियों से परिभाषित करती हैं; अंतर्निहित प्रोसेसर शब्द आकार के आधार पर दूसरों की अलग-अलग परिभाषाएँ हैं। सभी भाषा कार्यान्वयन सभी पूर्णांक आकारों के चर को परिभाषित नहीं करते हैं, और परिभाषित आकार किसी विशेष कार्यान्वयन में भिन्न भी नहीं हो सकते हैं। एक [[प्रोग्रामिंग भाषा]] में एक पूर्णांक एक अलग भाषा में या एक अलग प्रोसेसर पर एक अलग आकार का हो सकता है।
कुछ कंप्यूटर भाषाएँ पूर्णांक आकार को मशीन-स्वतंत्र विधियों से परिभाषित करती हैं; अंतर्निहित प्रोसेसर शब्द आकार के आधार पर दूसरों की अलग-अलग परिभाषाएँ हैं। सभी भाषा कार्यान्वयन सभी पूर्णांक आकारों के चर को परिभाषित नहीं करते हैं, और परिभाषित आकार किसी विशेष कार्यान्वयन में भिन्न भी नहीं हो सकते हैं। एक [[प्रोग्रामिंग भाषा]] में एक पूर्णांक एक अलग भाषा में या एक अलग प्रोसेसर पर एक अलग आकार का हो सकता है।
Line 178: Line 178:
| rowspan="2" style="text-align:right;"| ''n''
| rowspan="2" style="text-align:right;"| ''n''
| rowspan="2" | एन-बिट पूर्णांक
| rowspan="2" | एन-बिट पूर्णांक
(सामान्य मामला)
(सामान्य स्थिति)
| ''हस्ताक्षरित:'' −(2<sup>''n''−1</sup>) से (2<sup>''n''−1</sup>&nbsp;−1)
| ''हस्ताक्षरित:'' −(2<sup>''n''−1</sup>) से (2<sup>''n''−1</sup>&nbsp;−1)
| colspan="2" | (''n''−1) log<sub>10</sub>2
| colspan="2" | (''n''−1) log<sub>10</sub>2
Line 187: Line 187:
| colspan="8" | पता:  श्रेणी 0..2**n-1,  मॉड 2**n; मानक पुस्तकालय' या तृतीय-पक्ष स्वैच्छिक अंकगणित पुस्तकालय 'बिगडिसीमल या दशमलव कक्षाएं कई भाषाओं में जैसे कि पायथन, सी ++, आदि।
| colspan="8" | पता:  श्रेणी 0..2**n-1,  मॉड 2**n; मानक पुस्तकालय' या तृतीय-पक्ष स्वैच्छिक अंकगणित पुस्तकालय 'बिगडिसीमल या दशमलव कक्षाएं कई भाषाओं में जैसे कि पायथन, सी ++, आदि।
|}
|}
विभिन्न [[सेंट्रल प्रोसेसिंग यूनिट]] विभिन्न अभिन्न डेटा प्रकारों का समर्थन करते हैं। सामान्यतः, हार्डवेयर हस्ताक्षरित और अहस्ताक्षरित दोनों प्रकारों लेकिन चौड़ाई का केवल एक छोटा, निश्चित सेट का समर्थन करता है।
विभिन्न [[सेंट्रल प्रोसेसिंग यूनिट]] विभिन्न अभिन्न डेटा प्रकारों का समर्थन करते हैं। सामान्यतः, हार्डवेयर हस्ताक्षरित और अहस्ताक्षरित दोनों प्रकारों किन्तु चौड़ाई का केवल एक छोटा, निश्चित समुच्चय का समर्थन करता है।


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


[[लिस्प प्रोग्रामिंग भाषा]], स्मॉलटाक, [[रेक्स]], [[हास्केल (प्रोग्रामिंग भाषा)]], पायथन (प्रोग्रामिंग भाषा), और [[राकू (प्रोग्रामिंग भाषा)]] जैसी कुछ भाषाएं स्वैच्छिक त्रुटिहीन पूर्णांक (जिसे अनंत त्रुटिहीन पूर्णांक या [[bignum|बिग्नम]] भी कहा जाता है) का समर्थन करती हैं। अन्य भाषाएं जो इस अवधारणा को एक शीर्ष-स्तरीय निर्माण के रूप में समर्थन नहीं करती हैं, उनमें जावा के {{mono|बड़ा पूर्णांक}} वर्ग या [[पर्ल]] के "{{mono|बिगिन्ट}}" पैकेज जैसे छोटे चर के सरणियों का उपयोग करके बहुत बड़ी संख्या का प्रतिनिधित्व करने के लिए पुस्तकालय उपलब्ध हो सकते हैं।<ref>{{cite web |url=http://download.oracle.com/javase/6/docs/api/java/math/BigInteger.html |title=BigInteger (Java Platform SE 6) |publisher=Oracle |access-date=2011-09-11 }}</ref> ये कंप्यूटर की उतनी ही मेमोरी का उपयोग करते हैं जितनी संख्याओं को संग्रहीत करने के लिए आवश्यक होती है; चूँकि, एक कंप्यूटर में केवल एक सीमित मात्रा में संचय होता है, इसलिए वे भी केवल गणितीय पूर्णांकों के एक सीमित उपसमुच्चय का प्रतिनिधित्व कर सकते हैं। ये योजनाएँ बहुत बड़ी संख्या का समर्थन करती हैं; उदाहरण के लिए एक किलोबाइट मेमोरी का उपयोग 2466 दशमलव अंकों तक की संख्या को स्टोर करने के लिए किया जा सकता है।
[[लिस्प प्रोग्रामिंग भाषा]], स्मॉलटाक, [[रेक्स]], [[हास्केल (प्रोग्रामिंग भाषा)]], पायथन (प्रोग्रामिंग भाषा), और [[राकू (प्रोग्रामिंग भाषा)]] जैसी कुछ भाषाएं स्वैच्छिक त्रुटिहीन पूर्णांक (जिसे अनंत त्रुटिहीन पूर्णांक या [[bignum|बिग्नम]] भी कहा जाता है) का समर्थन करती हैं। अन्य भाषाएं जो इस अवधारणा को एक शीर्ष-स्तरीय निर्माण के रूप में समर्थन नहीं करती हैं, उनमें जावा के {{mono|बड़ा पूर्णांक}} वर्ग या [[पर्ल]] के "{{mono|बिगिन्ट}}" पैकेज जैसे छोटे चर के सरणियों का उपयोग करके अधिक बड़ी संख्या का प्रतिनिधित्व करने के लिए पुस्तकालय उपलब्ध हो सकते हैं।<ref>{{cite web |url=http://download.oracle.com/javase/6/docs/api/java/math/BigInteger.html |title=BigInteger (Java Platform SE 6) |publisher=Oracle |access-date=2011-09-11 }}</ref> ये कंप्यूटर की उतनी ही मेमोरी का उपयोग करते हैं जितनी संख्याओं को संग्रहीत करने के लिए आवश्यक होती है; चूँकि, एक कंप्यूटर में केवल एक सीमित मात्रा में संचय होता है, इसलिए वे भी केवल गणितीय पूर्णांकों के एक सीमित उपसमुच्चय का प्रतिनिधित्व कर सकते हैं। ये योजनाएँ अधिक बड़ी संख्या का समर्थन करती हैं; उदाहरण के लिए एक किलोबाइट मेमोरी का उपयोग 2466 दशमलव अंकों तक की संख्या को स्टोर करने के लिए किया जा सकता है।


एक [[बूलियन डेटाटाइप|बूलियन डेटाप्रकार]] या [[ध्वज (कंप्यूटिंग)]] प्रकार एक प्रकार है जो केवल दो मानों 0 और 1 का प्रतिनिधित्व कर सकता है: सामान्यतः क्रमशः गलत और सत्य के साथ पहचाना जाता है। इस प्रकार को एक बिट का उपयोग करके स्मृति में संग्रहीत किया जा सकता है, लेकिन अक्सर पता लगाने और पहुंच की गति की सुविधा के लिए इसे पूर्ण बाइट दिया जाता है।
एक [[बूलियन डेटाटाइप|बूलियन डेटाप्रकार]] या [[ध्वज (कंप्यूटिंग)]] प्रकार एक प्रकार है जो केवल दो मानों 0 और 1 का प्रतिनिधित्व कर सकता है: सामान्यतः क्रमशः गलत और सत्य के साथ पहचाना जाता है। इस प्रकार को एक बिट का उपयोग करके स्मृति में संग्रहीत किया जा सकता है, किन्तु अधिकांश पता लगाने और पहुंच की गति की सुविधा के लिए इसे पूर्ण बाइट दिया जाता है।


एक चार-बिट मात्रा को निबल (खाते समय, काटने से छोटा होना) या नीबल (शब्द बाइट के रूप में एक वाक्य होना) के रूप में जाना जाता है। एक निबल [[हेक्साडेसिमल]] में एक अंक से मेल खाता है और बाइनरी-कोडेड दशमलव में एक अंक या साइन कोड रखता है।
एक चार-बिट मात्रा को निबल (खाते समय, काटने से छोटा होना) या नीबल (शब्द बाइट के रूप में एक वाक्य होना) के रूप में जाना जाता है। एक निबल [[हेक्साडेसिमल]] में एक अंक से मेल खाता है और बाइनरी-कोडेड दशमलव में एक अंक या साइन कोड रखता है।
Line 202: Line 202:
बाइट शब्द का शुरू में अर्थ 'स्मृति की सबसे छोटी पता योग्य इकाई' था। अतीत में, 5-, 6-, 7-, 8-, और 9-बिट बाइट सभी का उपयोग किया गया है। ऐसे कंप्यूटर भी हैं जो अलग-अलग बिट्स ('बिट-पता मशीन') को संबोधित कर सकते हैं, या जो केवल 16- या 32-बिट मात्राओं ('वर्ड-पता मशीन') को संबोधित कर सकते हैं। शब्द बाइट सामान्यतः बिट- और वर्ड-पता मशीनों के संबंध में बिल्कुल भी उपयोग नहीं किया जाता था।
बाइट शब्द का शुरू में अर्थ 'स्मृति की सबसे छोटी पता योग्य इकाई' था। अतीत में, 5-, 6-, 7-, 8-, और 9-बिट बाइट सभी का उपयोग किया गया है। ऐसे कंप्यूटर भी हैं जो अलग-अलग बिट्स ('बिट-पता मशीन') को संबोधित कर सकते हैं, या जो केवल 16- या 32-बिट मात्राओं ('वर्ड-पता मशीन') को संबोधित कर सकते हैं। शब्द बाइट सामान्यतः बिट- और वर्ड-पता मशीनों के संबंध में बिल्कुल भी उपयोग नहीं किया जाता था।


ऑक्टेट शब्द हमेशा 8-बिट मात्रा को संदर्भित करता है। यह ज्यादातर [[संगणक संजाल|कंप्यूटर नेटवर्क]] के क्षेत्र में उपयोग किया जाता है, जहां विभिन्न बाइट चौड़ाई वाले कंप्यूटरों को संचार करना पड़ सकता है।
ऑक्टेट शब्द हमेशा 8-बिट मात्रा को संदर्भित करता है। यह अधिकांशतः [[संगणक संजाल|कंप्यूटर नेटवर्क]] के क्षेत्र में उपयोग किया जाता है, जहां विभिन्न बाइट चौड़ाई वाले कंप्यूटरों को संचार करना पड़ सकता है।


आधुनिक उपयोग में बाइट का अर्थ लगभग हमेशा आठ बिट्स होता है, क्योंकि अन्य सभी आकार अनुपयोगी हो गए हैं; इस प्रकार बाइट ऑक्टेट का पर्याय बन गया है।
आधुनिक उपयोग में बाइट का अर्थ लगभग हमेशा आठ बिट्स होता है, क्योंकि अन्य सभी आकार अनुपयोगी हो गए हैं; इस प्रकार बाइट ऑक्टेट का पर्याय बन गया है।
Line 208: Line 208:
=== शब्द ===
=== शब्द ===
{{Main article|वर्ड (कंप्यूटर आर्किटेक्चर)}}
{{Main article|वर्ड (कंप्यूटर आर्किटेक्चर)}}
'शब्द' शब्द का प्रयोग बिट्स के एक छोटे समूह के लिए किया जाता है जिसे एक विशेष [[कंप्यूटर आर्किटेक्चर]] के प्रोसेसर द्वारा एक साथ नियंत्रित किया जाता है। एक शब्द का आकार इस प्रकार सीपीयू-विशिष्ट है। 6-, 8-, 12-, 16-, 18-, 24-, 32-, 36-, 39-, 40-, 48-, 60-, और 64-बिट सहित कई अलग-अलग शब्द आकारों का उपयोग किया गया है। चूंकि यह वास्तुकला है, एक शब्द का आकार सामान्यतः बाद में संगत सीपीयू की विशेषताओं के बजाय परिवार में पहले सीपीयू द्वारा निर्धारित किया जाता है। शब्द से प्राप्त शब्दों के अर्थ, जैसे लॉन्गवर्ड, डबलवर्ड, क्वाडवर्ड और हाफवर्ड, भी सीपीयू और ओएस के साथ भिन्न होते हैं।<ref name="agnerfog" />
'शब्द' शब्द का प्रयोग बिट्स के एक छोटे समूह के लिए किया जाता है जिसे एक विशेष [[कंप्यूटर आर्किटेक्चर]] के प्रोसेसर द्वारा एक साथ नियंत्रित किया जाता है। एक शब्द का आकार इस प्रकार सीपीयू-विशिष्ट है। 6-, 8-, 12-, 16-, 18-, 24-, 32-, 36-, 39-, 40-, 48-, 60-, और 64-बिट सहित कई अलग-अलग शब्द आकारों का उपयोग किया गया है। चूंकि यह वास्तुकला है, एक शब्द का आकार सामान्यतः बाद में संगत सीपीयू की विशेषताओं के अतिरिक्त परिवार में पहले सीपीयू द्वारा निर्धारित किया जाता है। शब्द से प्राप्त शब्दों के अर्थ, जैसे लॉन्गवर्ड, डबलवर्ड, क्वाडवर्ड और हाफवर्ड, भी सीपीयू और ओएस के साथ भिन्न होते हैं।<ref name="agnerfog" />


व्यावहारिक रूप से सभी नए डेस्कटॉप प्रोसेसर 64-बिट शब्दों का उपयोग करने में सक्षम हैं, हालांकि 8- और 16-बिट शब्द आकार वाले [[अंतः स्थापित प्रणाली]] अभी भी सामान्य हैं। कंप्यूटर के शुरुआती दिनों में [[36-बिट]] शब्द की लंबाई सामान्य थी।
व्यावहारिक रूप से सभी नए डेस्कटॉप प्रोसेसर 64-बिट शब्दों का उपयोग करने में सक्षम हैं, चूंकि 8- और 16-बिट शब्द आकार वाले [[अंतः स्थापित प्रणाली]] अभी भी सामान्य हैं। कंप्यूटर के प्रारंभिक दिनों में [[36-बिट]] शब्द की लंबाई सामान्य थी।


सॉफ़्टवेयर की गैर-पोर्टेबिलिटी का एक महत्वपूर्ण कारण यह गलत धारणा है कि सभी कंप्यूटरों में एक ही शब्द का आकार होता है, जैसा कि प्रोग्रामर द्वारा उपयोग किए जाने वाले कंप्यूटर में होता है। उदाहरण के लिए, यदि सी भाषा का उपयोग करने वाला प्रोग्रामर गलत तरीके से {{mono|int}} चर घोषित करता है जिसका उपयोग 2<sup>15</sup>−1 से अधिक मानों को संग्रहीत करने के लिए किया जाएगा, तो प्रोग्राम 16-बिट पूर्णांक वाले कंप्यूटरों पर विफल हो जाएगा। उस वेरिएबल को लंबा घोषित किया जाना चाहिए था, जिसमें किसी भी कंप्यूटर पर कम से कम 32 बिट्स हों। प्रोग्रामर गलत तरीके से यह भी मान सकते हैं कि एक सूचक को सूचना के हानि के बिना एक पूर्णांक में परिवर्तित किया जा सकता है, जो 32-बिट कंप्यूटरों पर काम कर सकता है, लेकिन 64-बिट कंप्यूटरों पर 64-बिट पॉइंटर्स और 32-बिट पूर्णांकों के साथ विफल हो सकता है। यह समस्या सी99 द्वारा{{code|stdint.h}} में {{code|intptr_t}} के रूप में हल की गई है।
सॉफ़्टवेयर की गैर-पोर्टेबिलिटी का एक महत्वपूर्ण कारण यह गलत धारणा है कि सभी कंप्यूटरों में एक ही शब्द का आकार होता है, जैसा कि प्रोग्रामर द्वारा उपयोग किए जाने वाले कंप्यूटर में होता है। उदाहरण के लिए, यदि सी भाषा का उपयोग करने वाला प्रोग्रामर गलत तरीके से {{mono|int}} चर घोषित करता है जिसका उपयोग 2<sup>15</sup>−1 से अधिक मानों को संग्रहीत करने के लिए किया जाएगा, तो प्रोग्राम 16-बिट पूर्णांक वाले कंप्यूटरों पर विफल हो जाएगा। उस वेरिएबल को लंबा घोषित किया जाना चाहिए था, जिसमें किसी भी कंप्यूटर पर कम से कम 32 बिट्स हों। प्रोग्रामर गलत तरीके से यह भी मान सकते हैं कि एक सूचक को सूचना के हानि के बिना एक पूर्णांक में परिवर्तित किया जा सकता है, जो 32-बिट कंप्यूटरों पर काम कर सकता है, किन्तु 64-बिट कंप्यूटरों पर 64-बिट पॉइंटर्स और 32-बिट पूर्णांकों के साथ विफल हो सकता है। यह समस्या सी99 द्वारा{{code|stdint.h}} में {{code|intptr_t}} के रूप में समाधान की गई है।


=== लघु पूर्णांक ===
=== लघु पूर्णांक ===
एक छोटा पूर्णांक एक पूर्ण संख्या का प्रतिनिधित्व कर सकता है जो कम संचय ले सकता है, जबकि एक ही मशीन पर एक मानक पूर्णांक की तुलना में एक छोटी सी सीमा होती है।
एक छोटा पूर्णांक एक पूर्ण संख्या का प्रतिनिधित्व कर सकता है जो कम संचय ले सकता है, चूँकि एक ही मशीन पर एक मानक पूर्णांक की तुलना में एक छोटी सी सीमा होती है।


सी (प्रोग्रामिंग भाषा) में इसे {{mono|short}} से प्रदर्शित किया जाता है। यह कम से कम 16 बिट होना आवश्यक है, और अक्सर एक मानक पूर्णांक से छोटा होता है लेकिन यह आवश्यक नहीं है।<ref name="c99" /><ref name="drdobbsinteger" /> एक अनुरूप प्रोग्राम यह मान सकता है कि यह -(2<sup>15</sup>−1)<ref name="c-std-6.2.6.2p2">{{cite web |url=http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf |at=section 6.2.6.2, paragraph 2|title=ISO/IEC 9899:201x |access-date=2016-06-20 |publisher=open-std.org}}</ref> और 2<sup>15</sup>-1 के बीच मूल्यों को सुरक्षित रूप से संग्रहीत कर सकता है,<ref name="c-std-5.2.4.2.1">{{cite web |url=http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf |at=section 5.2.4.2.1|title=ISO/IEC 9899:201x |access-date=2016-06-20 |publisher=open-std.org}}</ref> लेकिन यह नहीं माना जा सकता है कि सीमा बड़ी नहीं है। [[जावा (प्रोग्रामिंग भाषा)]] में, a {{mono|short}} हमेशा 16-बिट पूर्णांक होता है। [[विंडोज एपीआई]] में, डेटाप्रकार {{mono|SHORT}} सभी मशीनों पर 16-बिट हस्ताक्षरित पूर्णांक के रूप में परिभाषित किया गया है।<ref name="agnerfog" />
सी (प्रोग्रामिंग भाषा) में इसे {{mono|short}} से प्रदर्शित किया जाता है। यह कम से कम 16 बिट होना आवश्यक है, और अधिकांश एक मानक पूर्णांक से छोटा होता है किन्तु यह आवश्यक नहीं है।<ref name="c99" /><ref name="drdobbsinteger" /> एक अनुरूप प्रोग्राम यह मान सकता है कि यह -(2<sup>15</sup>−1)<ref name="c-std-6.2.6.2p2">{{cite web |url=http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf |at=section 6.2.6.2, paragraph 2|title=ISO/IEC 9899:201x |access-date=2016-06-20 |publisher=open-std.org}}</ref> और 2<sup>15</sup>-1 के बीच मूल्यों को सुरक्षित रूप से संग्रहीत कर सकता है,<ref name="c-std-5.2.4.2.1">{{cite web |url=http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf |at=section 5.2.4.2.1|title=ISO/IEC 9899:201x |access-date=2016-06-20 |publisher=open-std.org}}</ref> किन्तु यह नहीं माना जा सकता है कि सीमा बड़ी नहीं है। [[जावा (प्रोग्रामिंग भाषा)]] में, a {{mono|short}} हमेशा 16-बिट पूर्णांक होता है। [[विंडोज एपीआई]] में, डेटाप्रकार {{mono|SHORT}} सभी मशीनों पर 16-बिट हस्ताक्षरित पूर्णांक के रूप में परिभाषित किया गया है।<ref name="agnerfog" />


{| class="wikitable"
{| class="wikitable"
Line 274: Line 274:
एक लंबा पूर्णांक एक पूर्ण पूर्णांक का प्रतिनिधित्व कर सकता है जिसकी सीमा (कंप्यूटर विज्ञान) उसी मशीन पर एक मानक पूर्णांक से अधिक या उसके बराबर है।
एक लंबा पूर्णांक एक पूर्ण पूर्णांक का प्रतिनिधित्व कर सकता है जिसकी सीमा (कंप्यूटर विज्ञान) उसी मशीन पर एक मानक पूर्णांक से अधिक या उसके बराबर है।


सी (प्रोग्रामिंग भाषा) में इसे {{mono|long}} द्वारा प्रदर्शित किया जाता है। यह कम से कम 32 बिट होना आवश्यक है, और एक मानक पूर्णांक से बड़ा हो भी सकता है और नहीं भी हो सकता हैं। एक अनुरूप प्रोग्राम यह मान सकता है कि यह -(2<sup>31</sup>−1)<ref name="c-std-6.2.6.2p2" /> और 2<sup>31</sup>−1 के बीच मूल्यों को सुरक्षित रूप से संग्रहीत कर सकता है,<ref name="c-std-5.2.4.2.1" /> लेकिन यह नहीं माना जा सकता है कि सीमा बड़ी नहीं है।
सी (प्रोग्रामिंग भाषा) में इसे {{mono|long}} द्वारा प्रदर्शित किया जाता है। यह कम से कम 32 बिट होना आवश्यक है, और एक मानक पूर्णांक से बड़ा हो भी सकता है और नहीं भी हो सकता हैं। एक अनुरूप प्रोग्राम यह मान सकता है कि यह -(2<sup>31</sup>−1)<ref name="c-std-6.2.6.2p2" /> और 2<sup>31</sup>−1 के बीच मूल्यों को सुरक्षित रूप से संग्रहीत कर सकता है,<ref name="c-std-5.2.4.2.1" /> किन्तु यह नहीं माना जा सकता है कि सीमा बड़ी नहीं है।


{| class="wikitable"
{| class="wikitable"
Line 372: Line 372:
=== लंबा लंबा ===
=== लंबा लंबा ===
{{redirect-distinguish|लंबा लंबा|लंबा (बहुविकल्पी){{!}}लंबा|लंबा, लंबा, लंबा}}
{{redirect-distinguish|लंबा लंबा|लंबा (बहुविकल्पी){{!}}लंबा|लंबा, लंबा, लंबा}}
सी (प्रोग्रामिंग भाषा) के [[C99|सी99]] संस्करण और [[C++|सी++]] के [[C++11|सी++11]] संस्करण में, a <CODE>long long</CODE> प्रकार समर्थित है जिसकी मानक की न्यूनतम क्षमता दोगुनी है <CODE>लंबा </CODE>। यह प्रकार उन कंपाइलरों द्वारा समर्थित नहीं है जिनके लिए सी कोड को पिछले सी ++ मानक, सी ++ 03 के अनुरूप होना आवश्यक है, क्योंकि {{mono|long long}} प्रकार सी ++ 03 में मौजूद नहीं था। एएनएसआई/आईएसओ अनुपालक संकलक के लिए, निर्दिष्ट श्रेणियों के लिए न्यूनतम आवश्यकताएं, अर्थात, −(2<sup>63</sup>−1)<ref name="c-std-6.2.6.2p2" />2<sup>63</sup>-1 हस्ताक्षरित के लिए और 0 से 2<sup>64</sup>−1 अहस्ताक्षरित के लिए,<ref name="c-std-5.2.4.2.1" />पूरा होना चाहिए; चूँकि, इस सीमा का विस्तार करने की अनुमति है।<ref>{{cite web| url=http://www.ericgiguere.com/articles/ansi-c-summary.html|title=The ANSI Standard: A Summary for the C Programmer|first=Eric|last=Giguere|date=December 18, 1987|access-date=2010-09-04}}</ref><ref>{{cite web|url=http://flash-gordon.me.uk/ansi.c.txt|title=American National Standard Programming Language C specifies the syntax and semantics of programs written in the C programming language.|access-date=2010-09-04|url-status=dead|archive-url=https://web.archive.org/web/20100822072551/http://flash-gordon.me.uk/ansi.c.txt|archive-date=2010-08-22}}</ref> प्लेटफ़ॉर्म के बीच कोड और डेटा का आदान-प्रदान करते समय या सीधे हार्डवेयर एक्सेस करते समय यह एक समस्या हो सकती है। इस प्रकार, प्लेटफ़ॉर्म स्वतंत्र त्रुटिहीन चौड़ाई प्रकार प्रदान करने वाले हेडर के कई सेट हैं। सी [[मानक पुस्तकालय]] प्रदान करता है stdint.h; इसे सी99 और सी++11 में प्रस्तुत किया गया था।
सी (प्रोग्रामिंग भाषा) के [[C99|सी99]] संस्करण और [[C++|सी++]] के [[C++11|सी++11]] संस्करण में, a <CODE>long long</CODE> प्रकार समर्थित है जिसकी मानक की न्यूनतम क्षमता दोगुनी है <CODE>लंबा </CODE>। यह प्रकार उन कंपाइलरों द्वारा समर्थित नहीं है जिनके लिए सी कोड को पिछले सी ++ मानक, सी ++ 03 के अनुरूप होना आवश्यक है, क्योंकि {{mono|long long}} प्रकार सी ++ 03 में उपस्थित नहीं था। एएनएसआई/आईएसओ अनुपालक संकलक के लिए, निर्दिष्ट श्रेणियों के लिए न्यूनतम आवश्यकताएं, अर्थात, −(2<sup>63</sup>−1)<ref name="c-std-6.2.6.2p2" />2<sup>63</sup>-1 हस्ताक्षरित के लिए और 0 से 2<sup>64</sup>−1 अहस्ताक्षरित के लिए,<ref name="c-std-5.2.4.2.1" />पूरा होना चाहिए; चूँकि, इस सीमा का विस्तार करने की अनुमति है।<ref>{{cite web| url=http://www.ericgiguere.com/articles/ansi-c-summary.html|title=The ANSI Standard: A Summary for the C Programmer|first=Eric|last=Giguere|date=December 18, 1987|access-date=2010-09-04}}</ref><ref>{{cite web|url=http://flash-gordon.me.uk/ansi.c.txt|title=American National Standard Programming Language C specifies the syntax and semantics of programs written in the C programming language.|access-date=2010-09-04|url-status=dead|archive-url=https://web.archive.org/web/20100822072551/http://flash-gordon.me.uk/ansi.c.txt|archive-date=2010-08-22}}</ref> प्लेटफ़ॉर्म के बीच कोड और डेटा का आदान-प्रदान करते समय या सीधे हार्डवेयर एक्सेस करते समय यह एक समस्या हो सकती है। इस प्रकार, प्लेटफ़ॉर्म स्वतंत्र त्रुटिहीन चौड़ाई प्रकार प्रदान करने वाले हेडर के कई समुच्चय हैं। सी [[मानक पुस्तकालय]] प्रदान करता है stdint.h; इसे सी99 और सी++11 में प्रस्तुत किया गया था।


== वाक्य-विन्यास ==
== वाक्य-विन्यास ==

Revision as of 12:30, 2 March 2023

कंप्यूटर विज्ञान में, एक पूर्णांक अभिन्न आंकड़े प्रकार का एक डेटा है, एक डेटा प्रकार जो गणितीय पूर्णांकों के कुछ अंतराल (गणित) का प्रतिनिधित्व करता है। अविभाज्य डेटा प्रकार विभिन्न आकारों के हो सकते हैं और ऋणात्मक मान रखने की अनुमति हो भी सकती है और नहीं भी हो सकती हैं। पूर्णांकों को सामान्यतः कंप्यूटर में बाइनरी अंकों (बिट्स) के समूह के रूप में दर्शाया जाता है। समूहीकरण का आकार भिन्न होता है इसलिए उपलब्ध पूर्णांक आकारों का समुच्चय विभिन्न प्रकार के कंप्यूटरों के बीच भिन्न होता है। कंप्यूटर हार्डवेयर लगभग हमेशा प्रोसेसर रजिस्टर या मेमोरी पता को पूर्णांक के रूप में प्रस्तुत करने की एक विधि प्रदान करती है।

मान और प्रतिनिधित्व

अभिन्न प्रकार वाले किसी वस्तु का मान वह गणितीय पूर्णांक है जिससे वह मेल खाता है। अभिन्न प्रकार अहस्ताक्षरित (केवल गैर-ऋणात्मक पूर्णांकों का प्रतिनिधित्व करने में सक्षम) या हस्ताक्षरित (ऋणात्मक पूर्णांकों का प्रतिनिधित्व करने में सक्षम) हो सकते हैं।[1]

एक पूर्णांक मान सामान्यतः एक प्रोग्राम के स्रोत कोड में अंकों के अनुक्रम के रूप में वैकल्पिक रूप से + या - के साथ उपसर्ग के रूप में निर्दिष्ट किया जाता है। कुछ प्रोग्रामिंग भाषा अन्य नोटेशन की अनुमति देती हैं, जैसे हेक्साडेसिमल (बेस 16) या ऑक्टल (बेस 8)। कुछ प्रोग्रामिंग भाषा अंक समूह विभाजकों को भी अनुमति देती हैं।[2]

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

द्विआधारी अंक प्रणाली का उपयोग करते हुए, एक सकारात्मक पूर्णांक का सबसे सामान्य प्रतिनिधित्व बिट्स की एक स्ट्रिंग है। बिट्स को संग्रहीत करने वाली मेमोरी बाइट का क्रम भिन्न होता है; एंडियननेस देखें। एक अभिन्न प्रकार की चौड़ाई या शुद्धता इसके प्रतिनिधित्व में बिट्स की संख्या है। एन बिट्स के साथ एक अभिन्न प्रकार 2n संख्याएं को सांकेतिक शब्दों में बदल सकता है; उदाहरण के लिए एक अहस्ताक्षरित प्रकार सामान्यतः गैर-ऋणात्मक मान 0 से 2n−1 का प्रतिनिधित्व करता है। बिट पैटर्न के पूर्णांक मानों के अन्य एन्कोडिंग कभी-कभी उदाहरण के लिए बाइनरी-कोडित दशमलव या ग्रे कोड, या मुद्रित वर्ण कोड जैसे एएससीआईआई के लिए उपयोग किए जाते हैं।

बाइनरी कंप्यूटिंग प्रणाली में हस्ताक्षरित संख्याओं का प्रतिनिधित्व करने के चार प्रसिद्ध विधियाँ हैं। सबसे सामान्य दो का पूरक है, जो एन बिट्स के साथ एक हस्ताक्षरित अभिन्न प्रकार को -2(n−1) से 2(n−1)−1 संख्याओं का प्रतिनिधित्व करने की अनुमति देता हैं। दो का पूरक अंकगणित सुविधाजनक है क्योंकि एक पूर्ण आक्षेप है | निरूपण और मानों (विशेष रूप से, कोई अलग +0 और -0 नहीं) के बीच एक-से-एक सही पत्राचार नहीं है, और क्योंकि जोड़, घटाव और गुणा को हस्ताक्षरित और अहस्ताक्षरित प्रकारों के बीच अंतर करने की आवश्यकता नहीं है। अन्य संभावनाओं में ऑफसमुच्चय बाइनरी, साइन-परिमाण और लोगों का पूरक शामिल हैं।

कुछ कंप्यूटर भाषाएँ पूर्णांक आकार को मशीन-स्वतंत्र विधियों से परिभाषित करती हैं; अंतर्निहित प्रोसेसर शब्द आकार के आधार पर दूसरों की अलग-अलग परिभाषाएँ हैं। सभी भाषा कार्यान्वयन सभी पूर्णांक आकारों के चर को परिभाषित नहीं करते हैं, और परिभाषित आकार किसी विशेष कार्यान्वयन में भिन्न भी नहीं हो सकते हैं। एक प्रोग्रामिंग भाषा में एक पूर्णांक एक अलग भाषा में या एक अलग प्रोसेसर पर एक अलग आकार का हो सकता है।

कुछ दशमलव कंप्यूटर पूर्णांकों के दशमलव निरूपण का उपयोग करते हैं, जो बाइनरी-कोडेड दशमलव (बीसीडी) या अन्य प्रारूप में संग्रहीत होते हैं। इन मानों को सामान्यतः एक संकेत के लिए अतिरिक्त बिट्स के साथ सामान्यतौर पर 4 बिट प्रति दशमलव अंक (कभी-कभी निबल कहा जाता है) के डेटा आकार की आवश्यकता होती है। कई आधुनिक सीपीयू एक विस्तारित डेटाप्रकार के रूप में दशमलव पूर्णांकों के लिए सीमित समर्थन प्रदान करते हैं, ऐसे मानों को बाइनरी मानों में और से परिवर्तित करने के लिए निर्देश प्रदान करते हैं। आर्किटेक्चर के आधार पर, दशमलव पूर्णांकों के निश्चित आकार हो सकते हैं (उदाहरण के लिए, 7 दशमलव अंक और 32-बिट शब्द में फिट होने वाला चिह्न), या चर-लंबाई (कुछ अधिकतम अंकों के आकार तक) हो सकता है, सामान्यतः प्रति बाइट (ओक्टेट) में दो अंक होते हैं।

सामान्य अभिन्न डेटा प्रकार

बिट्स नाम सीमा (हस्ताक्षरित के लिए दो पूरक मानते हुए) दशमलव अंक उपयोग कार्यान्वयन
सी/सी++ सी# पास्कल और

डेल्फी

जावा एसक्यूएल[lower-alpha 1] फोरट्रान डी रस्ट
4 निबल, अर्धवृद्धि हस्ताक्षरित: −8 से 7 तक, −(23) से 23 −1 तक 0.9 बाइनरी-कोडित दशमलव, एकल दशमलव अंक प्रतिनिधित्व
अहस्ताक्षरित: 0 से 15 तक, जो 24 −1 के बराबर है 1.2
8 बाइट, ओकटेट, आई8, यू8 हस्ताक्षरित: −128 से 127 तक, −(27) से 27 −1 तक 2.11 एएससीआईआई वर्ण, कोड इकाइयां यूटीएफ-8 वर्ण एन्कोडिंग में इंट8_टी, हस्ताक्षरित चार[lower-alpha 2] एसबाइट शॉर्टिंट बाइट टिनींट पूर्णांक (1) बाइट आई8
अहस्ताक्षरित: 0 से 255 तक, जो 28 −1 के बराबर है 2.41 यूंट8_टी, अहस्ताक्षरित चार[lower-alpha 2] बाइट बाइट अहस्ताक्षरित टिनींट यूबाइट यू8
16 हाफवर्ड, वर्ड, शॉर्ट, आई16, यू16 हस्ताक्षरित: −32,768 से 32,767 तक, −(215) से 215 −1 तक 4.52 यूसीएस-2 वर्ण, यूटीएफ-16 वर्ण एन्कोडिंग में कोड इकाइयाँ इंट16_टी, शार्ट[lower-alpha 2], इंट[lower-alpha 2] शार्ट स्मॉलिंट शार्ट स्मॉलिंट पूर्णांक (2) शार्ट आई16
अहस्ताक्षरित: 0 से 65,535 से, जो 216 − 1 के बराबर है 4.82 यूंट16_टी, अहस्ताक्षरित[lower-alpha 2], अहस्ताक्षरित इंट[lower-alpha 2] यूशॉर्ट वर्ड चार[lower-alpha 3] अहस्ताक्षरित स्मालिंट यूशॉर्ट यू16
32 शब्द, लंबा, डबलवर्ड, लॉन्गवर्ड, इंट, आई32, यू32 हस्ताक्षरित: −2,147,483,648 से 2,147,483,647 तक, −(231) से 231 −1 9.33 यूटीएफ-32 वर्ण

अल्फा के साथ असली रंग, 32-बिट कंप्यूटिंग में फोरसीसी, पॉइंटर्स

int32_t, int[lower-alpha 2], long[lower-alpha 2] इंट लोंगिंत; पूर्णांक[lower-alpha 4] इंट इंट पूर्णांक(4) इंट आई32
अहस्ताक्षरित: 0 से 4,294,967,295 से, जो 232 − 1 के बराबर है 9.63 यूंट32_टी, अहस्ताक्षरित[lower-alpha 2], अहस्ताक्षरित इंट[lower-alpha 2], अहस्ताक्षरित लंबा[lower-alpha 2] यूंट लॉन्गवर्ड; डीवर्ड; कार्डिनल[lower-alpha 4] अहस्ताक्षरित इंट यूंट यू32
64 वर्ड, डबलवर्ड, लॉन्गवर्ड, लॉन्ग लॉन्ग, क्वाड, क्वाडवर्ड, क्यूवर्ड, इंट64, आई64, यू64 हस्ताक्षरित: −9,223,372,036,854,775,808 से 9,223,372,036,854,775,807 तक, −(263) से 263 −1 तक 18.96 समय (यूनिक्स युग से मिलीसेकंड), 64-बिट कंप्यूटिंग में संकेत इंट64_टी, लॉन्ग[lower-alpha 2], लॉन्ग लॉन्ग[lower-alpha 2] लॉन्ग इंट64 लॉन्ग बिगिंट पूर्णांक (8) लॉन्ग आई64
अहस्ताक्षरित: 0 से 18,446,744,073,709,551,615 से, जो 264 − 1 के बराबर है 19.27 यूंट64_टी, अहस्ताक्षरित लंबे समय तक[lower-alpha 2] यूलॉन्ग यूंट64; क्यूवर्ड अहस्ताक्षरित बिगिंट यूलॉन्ग यू64
128 ऑक्टावर्ड, डबल क्वाडवर्ड, आई128, यू128 हस्ताक्षरित: −170,141,183,460,469,231,731,687,303,715,884,105,728 से 170,141,183,460,469,231,731,687,303,715,884,105,727, −(2127) से 2127 −1 तक 38.23 जटिल वैज्ञानिक गणना,

आईपी6 पते, गाइड

सी: केवल गैर-मानक कंपाइलर-विशिष्ट विस्तार के रूप में उपलब्ध है पूर्णांक(16) सेंट[lower-alpha 5] आई128
अहस्ताक्षरित: 0 से 340,282,366,920,938,463,463,374,607,431,768,211,455 से, जो 2128 − 1 के बराबर है 38.53 यूसेंट[lower-alpha 5] यू128
n एन-बिट पूर्णांक

(सामान्य स्थिति)

हस्ताक्षरित: −(2n−1) से (2n−1 −1) (n−1) log102 पता: श्रेणी -2**(n-1)..2**(n-1)-1
अहस्ताक्षरित: 0 से (2n − 1) n log102 पता:  श्रेणी 0..2**n-1,  मॉड 2**n; मानक पुस्तकालय' या तृतीय-पक्ष स्वैच्छिक अंकगणित पुस्तकालय 'बिगडिसीमल या दशमलव कक्षाएं कई भाषाओं में जैसे कि पायथन, सी ++, आदि।

विभिन्न सेंट्रल प्रोसेसिंग यूनिट विभिन्न अभिन्न डेटा प्रकारों का समर्थन करते हैं। सामान्यतः, हार्डवेयर हस्ताक्षरित और अहस्ताक्षरित दोनों प्रकारों किन्तु चौड़ाई का केवल एक छोटा, निश्चित समुच्चय का समर्थन करता है।

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

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

एक बूलियन डेटाप्रकार या ध्वज (कंप्यूटिंग) प्रकार एक प्रकार है जो केवल दो मानों 0 और 1 का प्रतिनिधित्व कर सकता है: सामान्यतः क्रमशः गलत और सत्य के साथ पहचाना जाता है। इस प्रकार को एक बिट का उपयोग करके स्मृति में संग्रहीत किया जा सकता है, किन्तु अधिकांश पता लगाने और पहुंच की गति की सुविधा के लिए इसे पूर्ण बाइट दिया जाता है।

एक चार-बिट मात्रा को निबल (खाते समय, काटने से छोटा होना) या नीबल (शब्द बाइट के रूप में एक वाक्य होना) के रूप में जाना जाता है। एक निबल हेक्साडेसिमल में एक अंक से मेल खाता है और बाइनरी-कोडेड दशमलव में एक अंक या साइन कोड रखता है।

बाइट्स और ऑक्टेट

बाइट शब्द का शुरू में अर्थ 'स्मृति की सबसे छोटी पता योग्य इकाई' था। अतीत में, 5-, 6-, 7-, 8-, और 9-बिट बाइट सभी का उपयोग किया गया है। ऐसे कंप्यूटर भी हैं जो अलग-अलग बिट्स ('बिट-पता मशीन') को संबोधित कर सकते हैं, या जो केवल 16- या 32-बिट मात्राओं ('वर्ड-पता मशीन') को संबोधित कर सकते हैं। शब्द बाइट सामान्यतः बिट- और वर्ड-पता मशीनों के संबंध में बिल्कुल भी उपयोग नहीं किया जाता था।

ऑक्टेट शब्द हमेशा 8-बिट मात्रा को संदर्भित करता है। यह अधिकांशतः कंप्यूटर नेटवर्क के क्षेत्र में उपयोग किया जाता है, जहां विभिन्न बाइट चौड़ाई वाले कंप्यूटरों को संचार करना पड़ सकता है।

आधुनिक उपयोग में बाइट का अर्थ लगभग हमेशा आठ बिट्स होता है, क्योंकि अन्य सभी आकार अनुपयोगी हो गए हैं; इस प्रकार बाइट ऑक्टेट का पर्याय बन गया है।

शब्द

'शब्द' शब्द का प्रयोग बिट्स के एक छोटे समूह के लिए किया जाता है जिसे एक विशेष कंप्यूटर आर्किटेक्चर के प्रोसेसर द्वारा एक साथ नियंत्रित किया जाता है। एक शब्द का आकार इस प्रकार सीपीयू-विशिष्ट है। 6-, 8-, 12-, 16-, 18-, 24-, 32-, 36-, 39-, 40-, 48-, 60-, और 64-बिट सहित कई अलग-अलग शब्द आकारों का उपयोग किया गया है। चूंकि यह वास्तुकला है, एक शब्द का आकार सामान्यतः बाद में संगत सीपीयू की विशेषताओं के अतिरिक्त परिवार में पहले सीपीयू द्वारा निर्धारित किया जाता है। शब्द से प्राप्त शब्दों के अर्थ, जैसे लॉन्गवर्ड, डबलवर्ड, क्वाडवर्ड और हाफवर्ड, भी सीपीयू और ओएस के साथ भिन्न होते हैं।[6]

व्यावहारिक रूप से सभी नए डेस्कटॉप प्रोसेसर 64-बिट शब्दों का उपयोग करने में सक्षम हैं, चूंकि 8- और 16-बिट शब्द आकार वाले अंतः स्थापित प्रणाली अभी भी सामान्य हैं। कंप्यूटर के प्रारंभिक दिनों में 36-बिट शब्द की लंबाई सामान्य थी।

सॉफ़्टवेयर की गैर-पोर्टेबिलिटी का एक महत्वपूर्ण कारण यह गलत धारणा है कि सभी कंप्यूटरों में एक ही शब्द का आकार होता है, जैसा कि प्रोग्रामर द्वारा उपयोग किए जाने वाले कंप्यूटर में होता है। उदाहरण के लिए, यदि सी भाषा का उपयोग करने वाला प्रोग्रामर गलत तरीके से int चर घोषित करता है जिसका उपयोग 215−1 से अधिक मानों को संग्रहीत करने के लिए किया जाएगा, तो प्रोग्राम 16-बिट पूर्णांक वाले कंप्यूटरों पर विफल हो जाएगा। उस वेरिएबल को लंबा घोषित किया जाना चाहिए था, जिसमें किसी भी कंप्यूटर पर कम से कम 32 बिट्स हों। प्रोग्रामर गलत तरीके से यह भी मान सकते हैं कि एक सूचक को सूचना के हानि के बिना एक पूर्णांक में परिवर्तित किया जा सकता है, जो 32-बिट कंप्यूटरों पर काम कर सकता है, किन्तु 64-बिट कंप्यूटरों पर 64-बिट पॉइंटर्स और 32-बिट पूर्णांकों के साथ विफल हो सकता है। यह समस्या सी99 द्वाराstdint.h में intptr_t के रूप में समाधान की गई है।

लघु पूर्णांक

एक छोटा पूर्णांक एक पूर्ण संख्या का प्रतिनिधित्व कर सकता है जो कम संचय ले सकता है, चूँकि एक ही मशीन पर एक मानक पूर्णांक की तुलना में एक छोटी सी सीमा होती है।

सी (प्रोग्रामिंग भाषा) में इसे short से प्रदर्शित किया जाता है। यह कम से कम 16 बिट होना आवश्यक है, और अधिकांश एक मानक पूर्णांक से छोटा होता है किन्तु यह आवश्यक नहीं है।[7][8] एक अनुरूप प्रोग्राम यह मान सकता है कि यह -(215−1)[9] और 215-1 के बीच मूल्यों को सुरक्षित रूप से संग्रहीत कर सकता है,[10] किन्तु यह नहीं माना जा सकता है कि सीमा बड़ी नहीं है। जावा (प्रोग्रामिंग भाषा) में, a short हमेशा 16-बिट पूर्णांक होता है। विंडोज एपीआई में, डेटाप्रकार SHORT सभी मशीनों पर 16-बिट हस्ताक्षरित पूर्णांक के रूप में परिभाषित किया गया है।[6]

सामान्य लघु पूर्णांक आकार
प्रोग्रामिंग भाषा डेटा प्रकार का नाम हस्ताक्षर बाइट्स में आकार न्यूनतम मान अधिकतम मान
सी और सी++ शार्ट हस्ताक्षर 2 −32,767[lower-alpha 6] +32,767
अहस्ताक्षरित शार्ट अहस्ताक्षरित 2 0 65,535
सी# शार्ट हस्ताक्षर 2 −32,768 +32,767
यूशॉर्ट अहस्ताक्षरित 2 0 65,535
जावा शार्ट हस्ताक्षर 2 −32,768 +32,767
एसक्यूएल स्मालिंट हस्ताक्षर 2 −32,768 +32,767


लंबा पूर्णांक

एक लंबा पूर्णांक एक पूर्ण पूर्णांक का प्रतिनिधित्व कर सकता है जिसकी सीमा (कंप्यूटर विज्ञान) उसी मशीन पर एक मानक पूर्णांक से अधिक या उसके बराबर है।

सी (प्रोग्रामिंग भाषा) में इसे long द्वारा प्रदर्शित किया जाता है। यह कम से कम 32 बिट होना आवश्यक है, और एक मानक पूर्णांक से बड़ा हो भी सकता है और नहीं भी हो सकता हैं। एक अनुरूप प्रोग्राम यह मान सकता है कि यह -(231−1)[9] और 231−1 के बीच मूल्यों को सुरक्षित रूप से संग्रहीत कर सकता है,[10] किन्तु यह नहीं माना जा सकता है कि सीमा बड़ी नहीं है।

सामान्य लंबे पूर्णांक आकार
प्रोग्रामिंग भाषा स्वीकृति प्रकार मंच डेटा प्रकार का नाम बाइट में संचय हस्ताक्षरित सीमा अहस्ताक्षरित सीमा
सी आईएसओ/एएनएसआई सी99 अंतर्राष्ट्रीय मानक यूनिक्स,16/32-बिट प्रणाली[6]
विंडोज,16/32/64-बिट प्रणाली[6]
लॉन्ग[lower-alpha 7] 4
(न्यूनतम आवश्यकता 4)
−2,147,483,647 से +2,147,483,647 0 से 4,294,967,295
(न्यूनतम आवश्यकता)
सी आईएसओ/एएनएसआई सी99 अंतर्राष्ट्रीय मानक यूनिक्स,
64-बिट प्रणाली[6][8]
लॉन्ग[lower-alpha 7] 8
(न्यूनतम आवश्यकता 4)
−9,223,372,036,854,775,807 से +9,223,372,036,854,775,807 0 से 18,446,744,073,709,551,615
सी++ आईएसओ / एएनएसआई अंतर्राष्ट्रीय मानक यूनिक्स, विंडोज,
16/32-बिट प्रणाली
लॉन्ग[lower-alpha 7] 4 [12]
(न्यूनतम आवश्यकता 4)
−2,147,483,648 से +2,147,483,647
0 से 4,294,967,295
(न्यूनतम आवश्यकता)
सी ++/सीएलआई अंतर्राष्ट्रीय मानक
ईसीएमए-372
यूनिक्स, विंडोज,
16/32-बिट प्रणाली
लॉन्ग[lower-alpha 7] 4 [13]
(न्यूनतम आवश्यकता 4)
−2,147,483,648 से +2,147,483,647
0 से 4,294,967,295
(न्यूनतम आवश्यकता)
वीबी कंपनी मानक विंडोज लॉन्ग 4 [14] −2,147,483,648 से +2,147,483,647
वीबीए कंपनी मानक विंडोज, मैक ओएसएक्स लॉन्ग 4 [15] −2,147,483,648 से +2,147,483,647
एसक्यूएल सर्वर कंपनी मानक विंडोज बिगइंट 8 −9,223,372,036,854,775,808 से +9,223,372,036,854,775,807 0 से 18,446,744,073,709,551,615
सी#/ वीबी डॉट नेट ईसीएमए अंतर्राष्ट्रीय मानक माइक्रोसॉफ्ट डॉट नेट लॉन्ग या इंट64 8 −9,223,372,036,854,775,808 से +9,223,372,036,854,775,807 0 से 18,446,744,073,709,551,615
जावा अंतर्राष्ट्रीय/कंपनी मानक जावा मंच लॉन्ग 8 −9,223,372,036,854,775,808 से +9,223,372,036,854,775,807
पास्कल ? विंडोज, यूनिक्स इंट64 8 −9,223,372,036,854,775,808 से +9,223,372,036,854,775,807 0 से 18,446,744,073,709,551,615 (क्यूवर्ड प्रकार)


लंबा लंबा

सी (प्रोग्रामिंग भाषा) के सी99 संस्करण और सी++ के सी++11 संस्करण में, a long long प्रकार समर्थित है जिसकी मानक की न्यूनतम क्षमता दोगुनी है लंबा । यह प्रकार उन कंपाइलरों द्वारा समर्थित नहीं है जिनके लिए सी कोड को पिछले सी ++ मानक, सी ++ 03 के अनुरूप होना आवश्यक है, क्योंकि long long प्रकार सी ++ 03 में उपस्थित नहीं था। एएनएसआई/आईएसओ अनुपालक संकलक के लिए, निर्दिष्ट श्रेणियों के लिए न्यूनतम आवश्यकताएं, अर्थात, −(263−1)[9]263-1 हस्ताक्षरित के लिए और 0 से 264−1 अहस्ताक्षरित के लिए,[10]पूरा होना चाहिए; चूँकि, इस सीमा का विस्तार करने की अनुमति है।[16][17] प्लेटफ़ॉर्म के बीच कोड और डेटा का आदान-प्रदान करते समय या सीधे हार्डवेयर एक्सेस करते समय यह एक समस्या हो सकती है। इस प्रकार, प्लेटफ़ॉर्म स्वतंत्र त्रुटिहीन चौड़ाई प्रकार प्रदान करने वाले हेडर के कई समुच्चय हैं। सी मानक पुस्तकालय प्रदान करता है stdint.h; इसे सी99 और सी++11 में प्रस्तुत किया गया था।

वाक्य-विन्यास

पूर्णांकों के लिए शाब्दिक को नियमित अरबी अंकों के रूप में लिखा जा सकता है, जिसमें अंकों का एक क्रम होता है और मान से पहले एक हाइफन-ऋण द्वारा प्रदर्शित निषेध होता है। चूँकि, अधिकांश प्रोग्रामिंग भाषाएँ अंक समूहीकरण के लिए अल्पविराम या रिक्त स्थान के उपयोग की अनुमति नहीं देती हैं। पूर्णांक शाब्दिक के उदाहरण हैं:

  • 42
  • 10000
  • -233000

कई प्रोग्रामिंग भाषाओं में पूर्णांक शाब्दिक लिखने के लिए कई वैकल्पिक विधियाँ हैं:

  • अधिकांश प्रोग्रामिंग भाषा, विशेष रूप से सी (प्रोग्रामिंग भाषा) से प्रभावित, हेक्साडेसिमल मान जैसे 0xDEADBEEF का प्रतिनिधित्व करने के लिए 0X या 0x के साथ एक पूर्णांक शाब्दिक उपसर्ग करती हैं, अन्य भाषाएँ भिन्न अंकन का उपयोग कर सकती हैं, उदा. असेम्बली भाषाएँ हेक्साडेसिमल मान के अंत में H या h जोड़ देती हैं।
  • पर्ल, रूबी (प्रोग्रामिंग भाषा), जावा (प्रोग्रामिंग भाषा), जूलिया (प्रोग्रामिंग भाषा), डी (प्रोग्रामिंग भाषा), गो (प्रोग्रामिंग भाषा), रस्ट (प्रोग्रामिंग भाषा) और पायथन (प्रोग्रामिंग भाषा) (संस्करण 3.6 से शुरू) स्पष्टता के लिए एम्बेडेड बल देना की अनुमति दें, उदा। 10_000_000, और फिक्स्ड-फॉर्म फोरट्रान पूर्णांक अक्षर में एम्बेडेड रिक्त स्थान को अनदेखा करता है। सी (सी2x से शुरू) और सी++ इस उद्देश्य के लिए एकल कोट्स का उपयोग करते हैं।
  • सी (प्रोग्रामिंग भाषा) और सी++ में, एक अग्रणी शून्य एक अष्टभुजाकार मान को प्रदर्शित करता है, उदा। 0755. यह मुख्य रूप से मोड (यूनिक्स) के साथ प्रयोग करने के लिए अभिप्रेत था; चूँकि, इसकी आलोचना की गई है क्योंकि सामान्य पूर्णांक भी शून्य के साथ नेतृत्व कर सकते हैं।[18] जैसे, हेक्साडेसिमल मानों द्वारा उपयोग किए गए लेआउट के बाद, पायथन, रूबी, हास्केल, और ओकाम्ल 0O या 0o के साथ ऑक्टल मान उपसर्ग करते हैं।
  • जावा (प्रोग्रामिंग भाषा), सी शार्प (प्रोग्रामिंग भाषा), स्काला (प्रोग्रामिंग भाषा), पायथन (प्रोग्रामिंग भाषा), रूबी (प्रोग्रामिंग भाषा), ओकाम्ल, सी (सी23 से शुरू) और सी ++ सहित कई भाषाएँ 0B या 0b के साथ किसी संख्या को उपसर्ग करके बाइनरी मानों का प्रतिनिधित्व कर सकती हैं।

यह भी देखें

टिप्पणियाँ

  1. Not all SQL dialects have unsigned datatypes.[3][4]
  2. 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 2.11 2.12 2.13 The sizes of char, short, int, long and long long in C/C++ are dependent upon the implementation of the language.
  3. Java does not directly support arithmetic on char types. The results must be cast back into char from an int.
  4. 4.0 4.1 The sizes of Delphi's Integer and Cardinal are not guaranteed, varying from platform to platform; usually defined as LongInt and LongWord respectively.
  5. 5.0 5.1 Reserved for future use. Not implemented yet.
  6. The ISO C standard allows implementations to reserve the value with sign bit 1 and all other bits 0 (for sign–magnitude and two's complement representation) or with all bits 1 (for ones' complement) for use as a "trap" value, used to indicate (for example) an overflow.[9]
  7. 7.0 7.1 7.2 7.3 The terms long and int are equivalent[11]


संदर्भ

  1. Cheever, Eric. "Representation of numbers". Swarthmore College. Retrieved 2011-09-11.
  2. Madhusudhan Konda (2011-09-02). "A look at Java 7's new features - O'Reilly Radar". Radar.oreilly.com. Retrieved 2013-10-15.
  3. "Sybase Adaptive Server Enterprise 15.5: Exact Numeric Datatypes".
  4. "MySQL 5.6 Numeric Datatypes".
  5. "BigInteger (Java Platform SE 6)". Oracle. Retrieved 2011-09-11.
  6. 6.0 6.1 6.2 6.3 6.4 Fog, Agner (2010-02-16). "Calling conventions for different C++ compilers and operating systems: Chapter 3, Data Representation" (PDF). Retrieved 2010-08-30.
  7. Giguere, Eric (1987-12-18). "The ANSI Standard: A Summary for the C Programmer". Retrieved 2010-09-04.
  8. 8.0 8.1 Meyers, Randy (2000-12-01). "The New C: Integers in C99, Part 1". drdobbs.com. Retrieved 2010-09-04.
  9. 9.0 9.1 9.2 9.3 "ISO/IEC 9899:201x" (PDF). open-std.org. section 6.2.6.2, paragraph 2. Retrieved 2016-06-20.
  10. 10.0 10.1 10.2 "ISO/IEC 9899:201x" (PDF). open-std.org. section 5.2.4.2.1. Retrieved 2016-06-20.
  11. "ISO/IEC 9899:201x" (PDF). open-std.org. Retrieved 2013-03-27.
  12. "Fundamental types in C++". cppreference.com. Retrieved 5 December 2010.
  13. "Chapter 8.6.2 on page 12" (PDF). ecma-international.org.
  14. VB 6.0 help file
  15. "The Integer, Long, and Byte Data Types (VBA)". microsoft.com. Retrieved 2006-12-19.
  16. Giguere, Eric (December 18, 1987). "The ANSI Standard: A Summary for the C Programmer". Retrieved 2010-09-04.
  17. "American National Standard Programming Language C specifies the syntax and semantics of programs written in the C programming language". Archived from the original on 2010-08-22. Retrieved 2010-09-04.
  18. ECMAScript 6th Edition draft: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-literals-numeric-literals Archived 2013-12-16 at the Wayback Machine