पूर्णांक (कंप्यूटर विज्ञान): Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{short description|Datum of integral data type}} | {{short description|Datum of integral data type}} | ||
कंप्यूटर विज्ञान में, एक [[पूर्णांक]] अभिन्न [[आंकड़े]] प्रकार का एक डेटा है, एक [[डेटा प्रकार]] जो गणितीय पूर्णांकों के कुछ [[अंतराल (गणित)]] का प्रतिनिधित्व करता है। | कंप्यूटर विज्ञान में, एक [[पूर्णांक]] अभिन्न [[आंकड़े]] प्रकार का एक डेटा है, एक [[डेटा प्रकार]] जो गणितीय पूर्णांकों के कुछ [[अंतराल (गणित)]] का प्रतिनिधित्व करता है। अविभाज्य डेटा प्रकार विभिन्न आकारों के हो सकते हैं और ऋणात्मक मान रखने की अनुमति हो भी सकती है और नहीं भी हो सकती हैं। पूर्णांकों को सामान्यतः कंप्यूटर में बाइनरी अंकों (बिट्स) के समूह के रूप में दर्शाया जाता है। समूहीकरण का आकार भिन्न होता है इसलिए उपलब्ध पूर्णांक आकारों का सेट विभिन्न प्रकार के कंप्यूटरों के बीच भिन्न होता है। कंप्यूटर हार्डवेयर लगभग हमेशा प्रोसेसर रजिस्टर या मेमोरी पता को पूर्णांक के रूप में प्रस्तुत करने की एक विधि प्रदान करती है। | ||
== | == मान और प्रतिनिधित्व == | ||
अभिन्न प्रकार वाले किसी | अभिन्न प्रकार वाले किसी वस्तु का मान वह गणितीय पूर्णांक है जिससे वह मेल खाता है। अभिन्न प्रकार अहस्ताक्षरित (केवल गैर-ऋणात्मक पूर्णांकों का प्रतिनिधित्व करने में सक्षम) या हस्ताक्षरित (ऋणात्मक पूर्णांकों का प्रतिनिधित्व करने में सक्षम) हो सकते हैं।<ref>{{cite web |url=http://www.swarthmore.edu/NatSci/echeeve1/Ref/BinaryMath/NumSys.html |title=Representation of numbers |last=Cheever |first=Eric |publisher=Swarthmore College |access-date=2011-09-11}}</ref> | ||
एक पूर्णांक मान सामान्यतः एक प्रोग्राम के स्रोत कोड में अंकों के अनुक्रम के रूप में वैकल्पिक रूप से + या - के साथ उपसर्ग के रूप में निर्दिष्ट किया जाता है। कुछ प्रोग्रामिंग भाषा अन्य नोटेशन की अनुमति देती हैं, जैसे हेक्साडेसिमल (बेस 16) या ऑक्टल (बेस 8)। कुछ प्रोग्रामिंग भाषा [[अंक समूह विभाजक|अंक समूह विभाजकों]] को भी अनुमति देती हैं।<ref>{{cite web|author=Madhusudhan Konda |url=http://radar.oreilly.com/2011/09/java7-features.html |title=A look at Java 7's new features - O'Reilly Radar |publisher=Radar.oreilly.com |date=2011-09-02 |access-date=2013-10-15}}</ref> | |||
इस निर्दिष्ट सिद्धांत का आंतरिक प्रतिनिधित्व कंप्यूटर की मेमोरी में मान को संग्रहीत करने की विधि है। गणितीय पूर्णांकों के विपरीत, कंप्यूटर में एक विशिष्ट निर्दिष्ट सिद्धांत का कुछ न्यूनतम और अधिकतम संभव मान होता है। | |||
द्विआधारी अंक प्रणाली का उपयोग करते हुए, एक सकारात्मक पूर्णांक का सबसे आम प्रतिनिधित्व [[अंश|बिट्स]] की एक स्ट्रिंग है। बिट्स को संग्रहीत करने वाली मेमोरी [[बाइट]] का क्रम भिन्न होता है; [[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 नहीं) के बीच एक-से-एक सही पत्राचार नहीं है, और क्योंकि जोड़, [[घटाव]] और [[गुणा]] को हस्ताक्षरित और अहस्ताक्षरित प्रकारों के बीच अंतर करने की आवश्यकता नहीं है। अन्य संभावनाओं में [[ऑफसेट बाइनरी]], [[साइन-परिमाण]] और लोगों का पूरक शामिल हैं। | ||
कुछ कंप्यूटर भाषाएँ पूर्णांक आकार को मशीन-स्वतंत्र विधियों से परिभाषित करती हैं; अंतर्निहित प्रोसेसर शब्द आकार के आधार पर दूसरों की अलग-अलग परिभाषाएँ हैं। सभी भाषा कार्यान्वयन सभी पूर्णांक आकारों के चर को परिभाषित नहीं करते हैं, और परिभाषित आकार किसी विशेष कार्यान्वयन में भिन्न भी नहीं हो सकते हैं। एक [[प्रोग्रामिंग भाषा]] में एक पूर्णांक एक अलग भाषा में या एक अलग प्रोसेसर पर एक अलग आकार का हो सकता है। | |||
कुछ [[दशमलव कंप्यूटर]] पूर्णांकों के दशमलव निरूपण का उपयोग करते हैं, जो बाइनरी-कोडेड दशमलव (बीसीडी) या अन्य प्रारूप में संग्रहीत होते हैं। इन मानों को सामान्यतः एक संकेत के लिए अतिरिक्त बिट्स के साथ आमतौर पर 4 बिट प्रति दशमलव अंक (कभी-कभी [[कुतरना|निबल]] कहा जाता है) के डेटा आकार की आवश्यकता होती है। कई आधुनिक सीपीयू एक विस्तारित डेटाटाइप के रूप में दशमलव पूर्णांकों के लिए सीमित समर्थन प्रदान करते हैं, ऐसे मानों को बाइनरी मानों में और से परिवर्तित करने के लिए निर्देश प्रदान करते हैं। आर्किटेक्चर के आधार पर, दशमलव पूर्णांकों के निश्चित आकार हो सकते हैं (उदाहरण के लिए, 7 दशमलव अंक और 32-बिट शब्द में फिट होने वाला चिह्न), या चर-लंबाई (कुछ अधिकतम अंकों के आकार तक) हो सकता है, सामान्यतः प्रति बाइट (ओक्टेट) में दो अंक होते हैं। | |||
== सामान्य अभिन्न डेटा प्रकार == | == सामान्य अभिन्न डेटा प्रकार == | ||
Line 187: | Line 189: | ||
विभिन्न [[सेंट्रल प्रोसेसिंग यूनिट]] विभिन्न अभिन्न डेटा प्रकारों का समर्थन करते हैं। सामान्यतः, हार्डवेयर हस्ताक्षरित और अहस्ताक्षरित दोनों प्रकारों का समर्थन करेगा, लेकिन चौड़ाई का केवल एक छोटा, निश्चित सेट। | विभिन्न [[सेंट्रल प्रोसेसिंग यूनिट]] विभिन्न अभिन्न डेटा प्रकारों का समर्थन करते हैं। सामान्यतः, हार्डवेयर हस्ताक्षरित और अहस्ताक्षरित दोनों प्रकारों का समर्थन करेगा, लेकिन चौड़ाई का केवल एक छोटा, निश्चित सेट। | ||
ऊपर दी गई तालिका अभिन्न प्रकार की चौड़ाई सूचीबद्ध करती है जो सामान्य प्रोसेसर द्वारा हार्डवेयर में समर्थित हैं। उच्च स्तरीय प्रोग्रामिंग भाषाएं अधिक संभावनाएं प्रदान करती हैं। एक 'डबल विड्थ' | ऊपर दी गई तालिका अभिन्न प्रकार की चौड़ाई सूचीबद्ध करती है जो सामान्य प्रोसेसर द्वारा हार्डवेयर में समर्थित हैं। उच्च स्तरीय प्रोग्रामिंग भाषाएं अधिक संभावनाएं प्रदान करती हैं। एक 'डबल विड्थ' अविभाज्य टाइप का होना आम बात है जिसमें सबसे बड़े हार्डवेयर-समर्थित टाइप के मुकाबले दोगुने बिट होते हैं। कई भाषाओं में बिट-फ़ील्ड प्रकार भी होते हैं (बिट्स की एक निर्दिष्ट संख्या, सामान्यतः अधिकतम हार्डवेयर-समर्थित चौड़ाई से कम होने के लिए विवश) और श्रेणी प्रकार (जो निर्दिष्ट सीमा में केवल पूर्णांकों का प्रतिनिधित्व कर सकते हैं)। | ||
[[लिस्प प्रोग्रामिंग भाषा]], स्मॉलटाक, [[रेक्स]], [[हास्केल (प्रोग्रामिंग भाषा)]], पायथन (प्रोग्रामिंग | [[लिस्प प्रोग्रामिंग भाषा]], स्मॉलटाक, [[रेक्स]], [[हास्केल (प्रोग्रामिंग भाषा)]], पायथन (प्रोग्रामिंग भाषा), और [[राकू (प्रोग्रामिंग भाषा)]] जैसी कुछ भाषाएं स्वैच्छिक त्रुटिहीन पूर्णांक (जिसे अनंत त्रुटिहीन पूर्णांक या [[bignum]] भी कहा जाता है) का समर्थन करती हैं। अन्य भाषाएँ जो इस अवधारणा को एक शीर्ष-स्तरीय निर्माण के रूप में समर्थन नहीं करती हैं, उनमें छोटे चर के सरणियों का उपयोग करके बहुत बड़ी संख्या का प्रतिनिधित्व करने के लिए पुस्तकालय उपलब्ध हो सकते हैं, जैसे कि जावा का {{mono|BigInteger}} क्लास या [[पर्ल]]{{mono|bigint}}पैकेट।<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 197: | Line 199: | ||
=== बाइट्स और ऑक्टेट === | === बाइट्स और ऑक्टेट === | ||
{{Main article|Byte|Octet (computing)}} | {{Main article|Byte|Octet (computing)}} | ||
बाइट शब्द का शुरू में अर्थ था 'स्मृति की सबसे छोटी पता योग्य इकाई'। अतीत में, 5-, 6-, 7-, 8-, और 9-बिट बाइट सभी का उपयोग किया गया है। ऐसे कंप्यूटर भी हैं जो अलग-अलग बिट्स ('बिट- | बाइट शब्द का शुरू में अर्थ था 'स्मृति की सबसे छोटी पता योग्य इकाई'। अतीत में, 5-, 6-, 7-, 8-, और 9-बिट बाइट सभी का उपयोग किया गया है। ऐसे कंप्यूटर भी हैं जो अलग-अलग बिट्स ('बिट-पता्ड मशीन') को संबोधित कर सकते हैं, या जो केवल 16- या 32-बिट मात्राओं ('वर्ड-पता्ड मशीन') को संबोधित कर सकते हैं। शब्द बाइट सामान्यतः बिट- और वर्ड-पताेड मशीनों के संबंध में बिल्कुल भी उपयोग नहीं किया जाता था। | ||
ऑक्टेट शब्द हमेशा 8-बिट मात्रा को संदर्भित करता है। यह ज्यादातर [[संगणक संजाल]]िंग के क्षेत्र में उपयोग किया जाता है, जहां विभिन्न बाइट चौड़ाई वाले कंप्यूटरों को संचार करना पड़ सकता है। | ऑक्टेट शब्द हमेशा 8-बिट मात्रा को संदर्भित करता है। यह ज्यादातर [[संगणक संजाल]]िंग के क्षेत्र में उपयोग किया जाता है, जहां विभिन्न बाइट चौड़ाई वाले कंप्यूटरों को संचार करना पड़ सकता है। | ||
Line 209: | Line 211: | ||
व्यावहारिक रूप से सभी नए डेस्कटॉप प्रोसेसर 64-बिट शब्दों का उपयोग करने में सक्षम हैं, हालांकि 8- और 16-बिट शब्द आकार वाले [[अंतः स्थापित प्रणाली]] अभी भी आम हैं। कंप्यूटर के शुरुआती दिनों में [[36-बिट]]|36-बिट शब्द की लंबाई आम थी। | व्यावहारिक रूप से सभी नए डेस्कटॉप प्रोसेसर 64-बिट शब्दों का उपयोग करने में सक्षम हैं, हालांकि 8- और 16-बिट शब्द आकार वाले [[अंतः स्थापित प्रणाली]] अभी भी आम हैं। कंप्यूटर के शुरुआती दिनों में [[36-बिट]]|36-बिट शब्द की लंबाई आम थी। | ||
सॉफ़्टवेयर की गैर-पोर्टेबिलिटी का एक महत्वपूर्ण कारण यह गलत धारणा है कि सभी कंप्यूटरों में एक ही शब्द का आकार होता है, जैसा कि प्रोग्रामर द्वारा उपयोग जाने वाले कंप्यूटर में होता है। उदाहरण के लिए, यदि कोई प्रोग्रामर C भाषा का उपयोग गलत | सॉफ़्टवेयर की गैर-पोर्टेबिलिटी का एक महत्वपूर्ण कारण यह गलत धारणा है कि सभी कंप्यूटरों में एक ही शब्द का आकार होता है, जैसा कि प्रोग्रामर द्वारा उपयोग जाने वाले कंप्यूटर में होता है। उदाहरण के लिए, यदि कोई प्रोग्रामर C भाषा का उपयोग गलत विधियों से घोषित करता है {{mono|int}} एक चर जिसका उपयोग 2 से अधिक मानों को संग्रहीत करने के लिए किया जाएगा<sup>15</sup>−1, 16-बिट पूर्णांक वाले कंप्यूटर पर प्रोग्राम विफल हो जाएगा। उस चर को घोषित किया जाना चाहिए था {{mono|long}}, जिसमें किसी भी कंप्यूटर पर कम से कम 32 बिट्स हों। प्रोग्रामर गलत विधियों से यह भी मान सकते हैं कि एक सूचक को सूचना के नुकसान के बिना एक पूर्णांक में परिवर्तित किया जा सकता है, जो 32-बिट कंप्यूटरों पर काम कर सकता है, लेकिन 64-बिट कंप्यूटरों पर 64-बिट पॉइंटर्स और 32-बिट पूर्णांकों के साथ विफल हो सकता है। यह समस्या C99 द्वारा stdint.h के रूप में हल की गई है {{code|intptr_t}}. | ||
=== लघु पूर्णांक === | === लघु पूर्णांक === | ||
एक छोटा पूर्णांक एक पूर्ण संख्या का प्रतिनिधित्व कर सकता है जो कम भंडारण ले सकता है, जबकि एक ही मशीन पर एक मानक पूर्णांक की तुलना में एक छोटी सी सीमा होती है। | एक छोटा पूर्णांक एक पूर्ण संख्या का प्रतिनिधित्व कर सकता है जो कम भंडारण ले सकता है, जबकि एक ही मशीन पर एक मानक पूर्णांक की तुलना में एक छोटी सी सीमा होती है। | ||
C (प्रोग्रामिंग | C (प्रोग्रामिंग भाषा) में इसे किसके द्वारा निरूपित किया जाता है {{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 271: | Line 273: | ||
एक लंबा पूर्णांक एक पूर्ण पूर्णांक का प्रतिनिधित्व कर सकता है जिसकी सीमा (कंप्यूटर विज्ञान) उसी मशीन पर एक मानक पूर्णांक से अधिक या उसके बराबर है। | एक लंबा पूर्णांक एक पूर्ण पूर्णांक का प्रतिनिधित्व कर सकता है जिसकी सीमा (कंप्यूटर विज्ञान) उसी मशीन पर एक मानक पूर्णांक से अधिक या उसके बराबर है। | ||
C (प्रोग्रामिंग | C (प्रोग्रामिंग भाषा) में इसे किसके द्वारा निरूपित किया जाता है {{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 369: | Line 371: | ||
=== लंबा लंबा === | === लंबा लंबा === | ||
{{redirect-distinguish|long long|long (disambiguation){{!}}long|Long, Long, Long}} | {{redirect-distinguish|long long|long (disambiguation){{!}}long|Long, Long, Long}} | ||
C (प्रोग्रामिंग भाषा) के [[C99]] संस्करण और [[C++]] के [[C++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> प्लेटफ़ॉर्म के बीच कोड और डेटा का आदान-प्रदान करते समय या सीधे हार्डवेयर एक्सेस करते समय यह एक समस्या हो सकती है। इस प्रकार, प्लेटफ़ॉर्म स्वतंत्र | C (प्रोग्रामिंग भाषा) के [[C99]] संस्करण और [[C++]] के [[C++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; इसे C99 और C++11 में पेश किया गया था। | ||
== सिंटेक्स == | == सिंटेक्स == | ||
पूर्णांकों के लिए शाब्दिक को नियमित [[अरबी अंक]]ों के रूप में लिखा जा सकता है, जिसमें अंकों का एक क्रम होता है और | पूर्णांकों के लिए शाब्दिक को नियमित [[अरबी अंक]]ों के रूप में लिखा जा सकता है, जिसमें अंकों का एक क्रम होता है और मान से पहले एक [[हाइफन-ऋण]] द्वारा इंगित निषेध होता है। हालाँकि, अधिकांश प्रोग्रामिंग भाषाएँ अंक समूहीकरण के लिए अल्पविराम या रिक्त स्थान के उपयोग की अनुमति नहीं देती हैं। पूर्णांक शाब्दिक के उदाहरण हैं: | ||
* <code>42</code> | * <code>42</code> | ||
Line 380: | Line 382: | ||
कई प्रोग्रामिंग भाषाओं में पूर्णांक शाब्दिक लिखने के लिए कई वैकल्पिक विधियाँ हैं: | कई प्रोग्रामिंग भाषाओं में पूर्णांक शाब्दिक लिखने के लिए कई वैकल्पिक विधियाँ हैं: | ||
* अधिकांश प्रोग्रामिंग | * अधिकांश प्रोग्रामिंग भाषा, विशेष रूप से सी (प्रोग्रामिंग भाषा) से प्रभावित, एक पूर्णांक शाब्दिक के साथ उपसर्ग करते हैं <code>0X</code> या <code>0x</code> एक हेक्साडेसिमल मान का प्रतिनिधित्व करने के लिए, उदा। <code>0xDEADBEEF</code>. अन्य भाषाएँ भिन्न अंकन का उपयोग कर सकती हैं, उदा. कुछ असेंबली भाषाएं संलग्न होती हैं <code>H</code> या <code>h</code> एक हेक्साडेसिमल मान के अंत तक। | ||
* पर्ल, [[रूबी (प्रोग्रामिंग भाषा)]], जावा (प्रोग्रामिंग | * पर्ल, [[रूबी (प्रोग्रामिंग भाषा)]], जावा (प्रोग्रामिंग भाषा), [[जूलिया (प्रोग्रामिंग भाषा)]], [[डी (प्रोग्रामिंग भाषा)]], [[जाओ (प्रोग्रामिंग भाषा)]], [[जंग (प्रोग्रामिंग भाषा)]] और पायथन (प्रोग्रामिंग भाषा) (संस्करण 3.6 से शुरू) स्पष्टता के लिए एम्बेडेड [[बल देना]] की अनुमति दें, उदा। <code>10_000_000</code>, और फिक्स्ड-फॉर्म [[फोरट्रान]] पूर्णांक अक्षर में एम्बेडेड रिक्त स्थान को अनदेखा करता है। C ([[C2x]] से शुरू) और C++ इस उद्देश्य के लिए सिंगल कोट्स का उपयोग करते हैं। | ||
* C (प्रोग्रामिंग | * C (प्रोग्रामिंग भाषा) और C++ में, एक अग्रणी शून्य एक [[अष्टभुजाकार]] मान को इंगित करता है, उदा। <code>0755</code>. यह मुख्य रूप से [[मोड (यूनिक्स)]] के साथ प्रयोग करने के लिए अभिप्रेत था; हालाँकि, इसकी आलोचना की गई है क्योंकि सामान्य पूर्णांक भी शून्य के साथ नेतृत्व कर सकते हैं।<ref>ECMAScript 6th Edition draft: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-literals-numeric-literals {{webarchive|url=https://web.archive.org/web/20131216202526/https://people.mozilla.org/~jorendorff/es6-draft.html |date=2013-12-16 }}</ref> जैसे, पायथन (प्रोग्रामिंग भाषा), रूबी (प्रोग्रामिंग भाषा), हास्केल (प्रोग्रामिंग भाषा), और [[OCaml]] प्रीफिक्स ऑक्टल वैल्यू के साथ <code>0O</code> या <code>0o</code>, हेक्साडेसिमल मानों द्वारा उपयोग गए लेआउट के बाद। | ||
* जावा (प्रोग्रामिंग | * जावा (प्रोग्रामिंग भाषा), सी शार्प (प्रोग्रामिंग भाषा) | सी #, [[स्काला (प्रोग्रामिंग भाषा)]], पायथन (प्रोग्रामिंग भाषा), रूबी (प्रोग्रामिंग भाषा), OCaml, C (C23 से शुरू) और C ++ सहित कई भाषाएँ प्रतिनिधित्व कर सकती हैं किसी संख्या के साथ प्रीफ़िक्स लगाकर बाइनरी मान <code>0B</code> या <code>0b</code>. | ||
== यह भी देखें == | == यह भी देखें == | ||
* [[मनमाना-सटीक अंकगणित|स्वैच्छिक- | * [[मनमाना-सटीक अंकगणित|स्वैच्छिक-त्रुटिहीन अंकगणित]] | ||
* बाइनरी-कोडेड दशमलव (बीसीडी) | * बाइनरी-कोडेड दशमलव (बीसीडी) | ||
* [[सी डेटा प्रकार]] | * [[सी डेटा प्रकार]] |
Revision as of 06:50, 1 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 | जटिल वैज्ञानिक गणना, | सी: केवल गैर-मानक कंपाइलर-विशिष्ट विस्तार के रूप में उपलब्ध है | — | — | — | — | पूर्णांक(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; मानक पुस्तकालय' या तृतीय-पक्ष स्वैच्छिक अंकगणित पुस्तकालय 'बिगडिसीमल या दशमलव कक्षाएं कई भाषाओं में जैसे कि पायथन, सी ++, आदि। |
विभिन्न सेंट्रल प्रोसेसिंग यूनिट विभिन्न अभिन्न डेटा प्रकारों का समर्थन करते हैं। सामान्यतः, हार्डवेयर हस्ताक्षरित और अहस्ताक्षरित दोनों प्रकारों का समर्थन करेगा, लेकिन चौड़ाई का केवल एक छोटा, निश्चित सेट।
ऊपर दी गई तालिका अभिन्न प्रकार की चौड़ाई सूचीबद्ध करती है जो सामान्य प्रोसेसर द्वारा हार्डवेयर में समर्थित हैं। उच्च स्तरीय प्रोग्रामिंग भाषाएं अधिक संभावनाएं प्रदान करती हैं। एक 'डबल विड्थ' अविभाज्य टाइप का होना आम बात है जिसमें सबसे बड़े हार्डवेयर-समर्थित टाइप के मुकाबले दोगुने बिट होते हैं। कई भाषाओं में बिट-फ़ील्ड प्रकार भी होते हैं (बिट्स की एक निर्दिष्ट संख्या, सामान्यतः अधिकतम हार्डवेयर-समर्थित चौड़ाई से कम होने के लिए विवश) और श्रेणी प्रकार (जो निर्दिष्ट सीमा में केवल पूर्णांकों का प्रतिनिधित्व कर सकते हैं)।
लिस्प प्रोग्रामिंग भाषा, स्मॉलटाक, रेक्स, हास्केल (प्रोग्रामिंग भाषा), पायथन (प्रोग्रामिंग भाषा), और राकू (प्रोग्रामिंग भाषा) जैसी कुछ भाषाएं स्वैच्छिक त्रुटिहीन पूर्णांक (जिसे अनंत त्रुटिहीन पूर्णांक या bignum भी कहा जाता है) का समर्थन करती हैं। अन्य भाषाएँ जो इस अवधारणा को एक शीर्ष-स्तरीय निर्माण के रूप में समर्थन नहीं करती हैं, उनमें छोटे चर के सरणियों का उपयोग करके बहुत बड़ी संख्या का प्रतिनिधित्व करने के लिए पुस्तकालय उपलब्ध हो सकते हैं, जैसे कि जावा का BigInteger क्लास या पर्लbigintपैकेट।[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-बिट|36-बिट शब्द की लंबाई आम थी।
सॉफ़्टवेयर की गैर-पोर्टेबिलिटी का एक महत्वपूर्ण कारण यह गलत धारणा है कि सभी कंप्यूटरों में एक ही शब्द का आकार होता है, जैसा कि प्रोग्रामर द्वारा उपयोग जाने वाले कंप्यूटर में होता है। उदाहरण के लिए, यदि कोई प्रोग्रामर C भाषा का उपयोग गलत विधियों से घोषित करता है int एक चर जिसका उपयोग 2 से अधिक मानों को संग्रहीत करने के लिए किया जाएगा15−1, 16-बिट पूर्णांक वाले कंप्यूटर पर प्रोग्राम विफल हो जाएगा। उस चर को घोषित किया जाना चाहिए था long, जिसमें किसी भी कंप्यूटर पर कम से कम 32 बिट्स हों। प्रोग्रामर गलत विधियों से यह भी मान सकते हैं कि एक सूचक को सूचना के नुकसान के बिना एक पूर्णांक में परिवर्तित किया जा सकता है, जो 32-बिट कंप्यूटरों पर काम कर सकता है, लेकिन 64-बिट कंप्यूटरों पर 64-बिट पॉइंटर्स और 32-बिट पूर्णांकों के साथ विफल हो सकता है। यह समस्या C99 द्वारा stdint.h के रूप में हल की गई है intptr_t
.
लघु पूर्णांक
एक छोटा पूर्णांक एक पूर्ण संख्या का प्रतिनिधित्व कर सकता है जो कम भंडारण ले सकता है, जबकि एक ही मशीन पर एक मानक पूर्णांक की तुलना में एक छोटी सी सीमा होती है।
C (प्रोग्रामिंग भाषा) में इसे किसके द्वारा निरूपित किया जाता है short. यह कम से कम 16 बिट होना आवश्यक है, और अक्सर एक मानक पूर्णांक से छोटा होता है, लेकिन यह आवश्यक नहीं है।[7][8]एक अनुरूप कार्यक्रम यह मान सकता है कि यह -(215−1)[9] और 215-1,[10] लेकिन यह नहीं माना जा सकता है कि सीमा बड़ी नहीं है। जावा (प्रोग्रामिंग भाषा) में, a short हमेशा 16-बिट पूर्णांक होता है। विंडोज एपीआई में, डेटाटाइप SHORT सभी मशीनों पर 16-बिट हस्ताक्षरित पूर्णांक के रूप में परिभाषित किया गया है।[6]
प्रोग्रामिंग भाषा | डेटा प्रकार का नाम | हस्ताक्षर | बाइट्स में आकार | न्यूनतम मान | अधिकतम मान |
---|---|---|---|---|---|
C और C++ | शार्ट | हस्ताक्षर | 2 | −32,767[lower-alpha 6] | +32,767 |
अहस्ताक्षरित शार्ट | अहस्ताक्षरित | 2 | 0 | 65,535 | |
C# | शार्ट | हस्ताक्षर | 2 | −32,768 | +32,767 |
यूशॉर्ट | अहस्ताक्षरित | 2 | 0 | 65,535 | |
Java | शार्ट | हस्ताक्षर | 2 | −32,768 | +32,767 |
SQL | स्मालिंट | हस्ताक्षर | 2 | −32,768 | +32,767 |
लंबा पूर्णांक
एक लंबा पूर्णांक एक पूर्ण पूर्णांक का प्रतिनिधित्व कर सकता है जिसकी सीमा (कंप्यूटर विज्ञान) उसी मशीन पर एक मानक पूर्णांक से अधिक या उसके बराबर है।
C (प्रोग्रामिंग भाषा) में इसे किसके द्वारा निरूपित किया जाता है 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 (क्यूवर्ड प्रकार) |
लंबा लंबा
C (प्रोग्रामिंग भाषा) के C99 संस्करण और C++ के C++11 संस्करण में, a long long
प्रकार समर्थित है जिसकी मानक की न्यूनतम क्षमता दोगुनी है लंबा
। यह प्रकार उन कंपाइलरों द्वारा समर्थित नहीं है जिनके लिए सी कोड को पिछले सी ++ मानक, सी ++ 03 के अनुरूप होना आवश्यक है, क्योंकि long long प्रकार सी ++ 03 में मौजूद नहीं था। एएनएसआई/आईएसओ अनुपालक संकलक के लिए, निर्दिष्ट श्रेणियों के लिए न्यूनतम आवश्यकताएं, अर्थात, −(263−1)[9]263-1 हस्ताक्षरित के लिए और 0 से 264−1 अहस्ताक्षरित के लिए,[10]पूरा होना चाहिए; हालाँकि, इस सीमा का विस्तार करने की अनुमति है।[16][17] प्लेटफ़ॉर्म के बीच कोड और डेटा का आदान-प्रदान करते समय या सीधे हार्डवेयर एक्सेस करते समय यह एक समस्या हो सकती है। इस प्रकार, प्लेटफ़ॉर्म स्वतंत्र त्रुटिहीन चौड़ाई प्रकार प्रदान करने वाले हेडर के कई सेट हैं। सी मानक पुस्तकालय प्रदान करता है stdint.h; इसे C99 और C++11 में पेश किया गया था।
सिंटेक्स
पूर्णांकों के लिए शाब्दिक को नियमित अरबी अंकों के रूप में लिखा जा सकता है, जिसमें अंकों का एक क्रम होता है और मान से पहले एक हाइफन-ऋण द्वारा इंगित निषेध होता है। हालाँकि, अधिकांश प्रोग्रामिंग भाषाएँ अंक समूहीकरण के लिए अल्पविराम या रिक्त स्थान के उपयोग की अनुमति नहीं देती हैं। पूर्णांक शाब्दिक के उदाहरण हैं:
42
10000
-233000
कई प्रोग्रामिंग भाषाओं में पूर्णांक शाब्दिक लिखने के लिए कई वैकल्पिक विधियाँ हैं:
- अधिकांश प्रोग्रामिंग भाषा, विशेष रूप से सी (प्रोग्रामिंग भाषा) से प्रभावित, एक पूर्णांक शाब्दिक के साथ उपसर्ग करते हैं
0X
या0x
एक हेक्साडेसिमल मान का प्रतिनिधित्व करने के लिए, उदा।0xDEADBEEF
. अन्य भाषाएँ भिन्न अंकन का उपयोग कर सकती हैं, उदा. कुछ असेंबली भाषाएं संलग्न होती हैंH
याh
एक हेक्साडेसिमल मान के अंत तक। - पर्ल, रूबी (प्रोग्रामिंग भाषा), जावा (प्रोग्रामिंग भाषा), जूलिया (प्रोग्रामिंग भाषा), डी (प्रोग्रामिंग भाषा), जाओ (प्रोग्रामिंग भाषा), जंग (प्रोग्रामिंग भाषा) और पायथन (प्रोग्रामिंग भाषा) (संस्करण 3.6 से शुरू) स्पष्टता के लिए एम्बेडेड बल देना की अनुमति दें, उदा।
10_000_000
, और फिक्स्ड-फॉर्म फोरट्रान पूर्णांक अक्षर में एम्बेडेड रिक्त स्थान को अनदेखा करता है। C (C2x से शुरू) और C++ इस उद्देश्य के लिए सिंगल कोट्स का उपयोग करते हैं। - C (प्रोग्रामिंग भाषा) और C++ में, एक अग्रणी शून्य एक अष्टभुजाकार मान को इंगित करता है, उदा।
0755
. यह मुख्य रूप से मोड (यूनिक्स) के साथ प्रयोग करने के लिए अभिप्रेत था; हालाँकि, इसकी आलोचना की गई है क्योंकि सामान्य पूर्णांक भी शून्य के साथ नेतृत्व कर सकते हैं।[18] जैसे, पायथन (प्रोग्रामिंग भाषा), रूबी (प्रोग्रामिंग भाषा), हास्केल (प्रोग्रामिंग भाषा), और OCaml प्रीफिक्स ऑक्टल वैल्यू के साथ0O
या0o
, हेक्साडेसिमल मानों द्वारा उपयोग गए लेआउट के बाद। - जावा (प्रोग्रामिंग भाषा), सी शार्प (प्रोग्रामिंग भाषा) | सी #, स्काला (प्रोग्रामिंग भाषा), पायथन (प्रोग्रामिंग भाषा), रूबी (प्रोग्रामिंग भाषा), OCaml, C (C23 से शुरू) और C ++ सहित कई भाषाएँ प्रतिनिधित्व कर सकती हैं किसी संख्या के साथ प्रीफ़िक्स लगाकर बाइनरी मान
0B
या0b
.
यह भी देखें
- स्वैच्छिक-त्रुटिहीन अंकगणित
- बाइनरी-कोडेड दशमलव (बीसीडी)
- सी डेटा प्रकार
- पूर्णांक अतिप्रवाह
- हस्ताक्षरित संख्या प्रतिनिधित्व
टिप्पणियाँ
- ↑ Not all SQL dialects have unsigned datatypes.[3][4]
- ↑ 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.
- ↑ Java does not directly support arithmetic on char types. The results must be cast back into char from an int.
- ↑ 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.0 5.1 Reserved for future use. Not implemented yet.
- ↑ 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.0 7.1 7.2 7.3 The terms long and int are equivalent[11]
संदर्भ
- ↑ Cheever, Eric. "Representation of numbers". Swarthmore College. Retrieved 2011-09-11.
- ↑ Madhusudhan Konda (2011-09-02). "A look at Java 7's new features - O'Reilly Radar". Radar.oreilly.com. Retrieved 2013-10-15.
- ↑ "Sybase Adaptive Server Enterprise 15.5: Exact Numeric Datatypes".
- ↑ "MySQL 5.6 Numeric Datatypes".
- ↑ "BigInteger (Java Platform SE 6)". Oracle. Retrieved 2011-09-11.
- ↑ 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.
- ↑ Giguere, Eric (1987-12-18). "The ANSI Standard: A Summary for the C Programmer". Retrieved 2010-09-04.
- ↑ 8.0 8.1 Meyers, Randy (2000-12-01). "The New C: Integers in C99, Part 1". drdobbs.com. Retrieved 2010-09-04.
- ↑ 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.0 10.1 10.2 "ISO/IEC 9899:201x" (PDF). open-std.org. section 5.2.4.2.1. Retrieved 2016-06-20.
- ↑ "ISO/IEC 9899:201x" (PDF). open-std.org. Retrieved 2013-03-27.
- ↑ "Fundamental types in C++". cppreference.com. Retrieved 5 December 2010.
- ↑ "Chapter 8.6.2 on page 12" (PDF). ecma-international.org.
- ↑ VB 6.0 help file
- ↑ "The Integer, Long, and Byte Data Types (VBA)". microsoft.com. Retrieved 2006-12-19.
- ↑ Giguere, Eric (December 18, 1987). "The ANSI Standard: A Summary for the C Programmer". Retrieved 2010-09-04.
- ↑ "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.
- ↑ ECMAScript 6th Edition draft: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-literals-numeric-literals Archived 2013-12-16 at the Wayback Machine