पूर्णांक (कंप्यूटर विज्ञान)
कंप्यूटर विज्ञान में, एक पूर्णांक अभिन्न आंकड़े प्रकार का एक डेटा है, एक डेटा प्रकार जो गणितीय पूर्णांकों के कुछ अंतराल (गणित) का प्रतिनिधित्व करता है। इंटीग्रल डेटा प्रकार विभिन्न आकारों के हो सकते हैं और नकारात्मक मान रखने की अनुमति हो भी सकती है और नहीं भी। पूर्णांकों को आमतौर पर कंप्यूटर में बाइनरी अंकों (बिट्स) के समूह के रूप में दर्शाया जाता है। समूहीकरण का आकार भिन्न होता है इसलिए उपलब्ध पूर्णांक आकारों का सेट विभिन्न प्रकार के कंप्यूटरों के बीच भिन्न होता है। कंप्यूटर हार्डवेयर लगभग हमेशा एक पूर्णांक के रूप में एक प्रोसेसर शब्द आकार या मेमोरी एड्रेस का प्रतिनिधित्व करने का एक तरीका प्रदान करता है।
मूल्य और प्रतिनिधित्व
अभिन्न प्रकार वाले किसी आइटम का मान वह गणितीय पूर्णांक है जिससे वह मेल खाता है। अभिन्न प्रकार अहस्ताक्षरित हो सकते हैं (केवल गैर-नकारात्मक पूर्णांकों का प्रतिनिधित्व करने में सक्षम) या हस्ताक्षरित (ऋणात्मक पूर्णांकों का प्रतिनिधित्व करने में सक्षम)।[1] एक पूर्णांक मान आमतौर पर एक प्रोग्राम के स्रोत कोड में अंकों के अनुक्रम के रूप में वैकल्पिक रूप से + या - के साथ उपसर्ग के रूप में निर्दिष्ट किया जाता है। कुछ प्रोग्रामिंग लैंग्वेज अन्य नोटेशन की अनुमति देती हैं, जैसे हेक्साडेसिमल (बेस 16) या ऑक्टल (बेस 8)। कुछ प्रोग्रामिंग लैंग्वेज अंक समूह विभाजक्स को भी अनुमति देती हैं।[2] इस डेटाम का आंतरिक प्रतिनिधित्व कंप्यूटर की मेमोरी में मान को संग्रहीत करने का तरीका है। गणितीय पूर्णांकों के विपरीत, कंप्यूटर में एक विशिष्ट डेटाम का कुछ न्यूनतम और अधिकतम संभव मान होता है।
द्विआधारी अंक प्रणाली का उपयोग करते हुए, एक सकारात्मक पूर्णांक का सबसे आम प्रतिनिधित्व अंश्स की एक स्ट्रिंग है। बिट्स को संग्रहीत करने वाली मेमोरी बाइट्स का क्रम भिन्न होता है; endianness देखें। एक अभिन्न प्रकार की चौड़ाई या सटीकता इसके प्रतिनिधित्व में बिट्स की संख्या है। एन बिट्स के साथ एक अभिन्न प्रकार 2 को सांकेतिक शब्दों में बदल सकता हैn संख्याएं; उदाहरण के लिए एक अहस्ताक्षरित प्रकार आमतौर पर गैर-नकारात्मक मान 0 से 2 का प्रतिनिधित्व करता हैएन−1. बिट पैटर्न के पूर्णांक मानों के अन्य एन्कोडिंग कभी-कभी उपयोग किए जाते हैं, उदाहरण के लिए बाइनरी-कोडित दशमलव या ग्रे कोड, या मुद्रित वर्ण कोड जैसे ASCII।
बाइनरी कंप्यूटिंग सिस्टम में चार प्रसिद्ध हस्ताक्षरित संख्या प्रतिनिधित्व हैं। सबसे आम दो का पूरक है, जो एन बिट्स के साथ एक हस्ताक्षरित अभिन्न प्रकार को -2 से संख्याओं का प्रतिनिधित्व करने की अनुमति देता है(n−1) से 2 तक(n−1)−1. दो का पूरक अंकगणित सुविधाजनक है क्योंकि एक पूर्ण आक्षेप है | निरूपण और मूल्यों के बीच एक-से-एक पत्राचार (विशेष रूप से, कोई अलग +0 और -0 नहीं), और क्योंकि जोड़, घटाव और गुणा को हस्ताक्षरित और के बीच अंतर करने की आवश्यकता नहीं है अहस्ताक्षरित प्रकार। अन्य संभावनाओं में ऑफसेट बाइनरी, साइन-परिमाण और लोगों का पूरक शामिल हैं।
कुछ कंप्यूटर भाषाएँ पूर्णांक आकार को मशीन-स्वतंत्र तरीके से परिभाषित करती हैं; अंतर्निहित प्रोसेसर शब्द आकार के आधार पर दूसरों की अलग-अलग परिभाषाएँ हैं। सभी भाषा कार्यान्वयन सभी पूर्णांक आकारों के चर को परिभाषित नहीं करते हैं, और परिभाषित आकार किसी विशेष कार्यान्वयन में भिन्न भी नहीं हो सकते हैं। एक प्रोग्रामिंग भाषा में एक पूर्णांक एक अलग भाषा में या एक अलग प्रोसेसर पर एक अलग आकार का हो सकता है।
कुछ दशमलव कंप्यूटर पूर्णांकों के दशमलव निरूपण का उपयोग करते हैं, जो बाइनरी-कोडेड दशमलव | बाइनरी-कोडेड दशमलव (BCD) या अन्य प्रारूप में संग्रहीत होते हैं। इन मानों के लिए आमतौर पर 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] | sbyte | Shortint | byte | tinyint | integer(1) | byte | i8 |
अहस्ताक्षरित: 0 से 255 तक, जो 28 −1 के बराबर है | 2.41 | यूंट8_टी, अहस्ताक्षरित चार[lower-alpha 2] | byte | Byte | — | unsigned tinyint | — | ubyte | u8 | |||
16 | हाफवर्ड, वर्ड, शॉर्ट, आई16, यू16 | हस्ताक्षरित: −32,768 से 32,767 तक, −(215) से 215 −1 तक | 4.52 | यूसीएस-2 वर्ण, यूटीएफ-16 वर्ण एन्कोडिंग में कोड इकाइयाँ | इंट16_टी, शार्ट[lower-alpha 2], इंट[lower-alpha 2] | short | Smallint | short | smallint | integer(2) | short | i16 |
अहस्ताक्षरित: 0 से 65,535 से, जो 216 − 1 के बराबर है | 4.82 | यूंट16_टी, अहस्ताक्षरित[lower-alpha 2], अहस्ताक्षरित इंट[lower-alpha 2] | ushort | Word | char[lower-alpha 3] | unsigned smallint | — | ushort | u16 | |||
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] | int | LongInt; Integer[lower-alpha 4] | int | int | integer(4) | int | i32 |
अहस्ताक्षरित: 0 से 4,294,967,295 से, जो 232 − 1 के बराबर है | 9.63 | यूंट32_टी, अहस्ताक्षरित[lower-alpha 2], अहस्ताक्षरित इंट[lower-alpha 2], अहस्ताक्षरित लंबा[lower-alpha 2] | uint | LongWord; DWord; Cardinal[lower-alpha 4] | — | unsigned int | — | uint | u32 | |||
64 | वर्ड, डबलवर्ड, लॉन्गवर्ड, लॉन्ग लॉन्ग, क्वाड, क्वाडवर्ड, क्यूवर्ड, इंट64, आई64, यू64 | हस्ताक्षरित: −9,223,372,036,854,775,808 से 9,223,372,036,854,775,807 तक, −(263) से 263 −1 तक | 18.96 | समय (यूनिक्स युग से मिलीसेकंड), 64-बिट कंप्यूटिंग में संकेत | int64_t, long[lower-alpha 2], long long[lower-alpha 2] | long | Int64 | long | bigint | integer(8) | long | i64 |
अहस्ताक्षरित: 0 से 18,446,744,073,709,551,615 से, जो 264 − 1 के बराबर है | 19.27 | uint64_t, unsigned long long[lower-alpha 2] | ulong | UInt64; QWord | — | unsigned bigint | — | ulong | u64 | |||
128 | ऑक्टावर्ड, डबल क्वाडवर्ड, आई128, यू128 | हस्ताक्षरित: From −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 | जटिल वैज्ञानिक गणना, | C: only available as non-standard compiler-specific extension | — | — | — | — | integer(16) | cent[lower-alpha 5] | i128 |
अहस्ताक्षरित: 0 से 340,282,366,920,938,463,463,374,607,431,768,211,455 से, जो 2128 − 1 के बराबर है | 38.53 | — | ucent[lower-alpha 5] | u128 | ||||||||
n | एन-बिट पूर्णांक
(सामान्य मामला) |
हस्ताक्षरित: −(2n−1) से (2n−1 −1) | (n −1) log102 | Ada: range -2**(n-1)..2**(n-1)-1 | ||||||||
अहस्ताक्षरित: 0 से (2n − 1) | n log102 | Ada: range 0..2**n-1, mod 2**n; standard libraries' or third-party arbitrary arithmetic libraries' BigDecimal or Decimal classes in many languages such as Python, C++, etc. |
विभिन्न सेंट्रल प्रोसेसिंग यूनिट विभिन्न अभिन्न डेटा प्रकारों का समर्थन करते हैं। आमतौर पर, हार्डवेयर हस्ताक्षरित और अहस्ताक्षरित दोनों प्रकारों का समर्थन करेगा, लेकिन चौड़ाई का केवल एक छोटा, निश्चित सेट।
ऊपर दी गई तालिका अभिन्न प्रकार की चौड़ाई सूचीबद्ध करती है जो सामान्य प्रोसेसर द्वारा हार्डवेयर में समर्थित हैं। उच्च स्तरीय प्रोग्रामिंग भाषाएं अधिक संभावनाएं प्रदान करती हैं। एक 'डबल विड्थ' इंटीग्रल टाइप का होना आम बात है जिसमें सबसे बड़े हार्डवेयर-समर्थित टाइप के मुकाबले दोगुने बिट होते हैं। कई भाषाओं में बिट-फ़ील्ड प्रकार भी होते हैं (बिट्स की एक निर्दिष्ट संख्या, आमतौर पर अधिकतम हार्डवेयर-समर्थित चौड़ाई से कम होने के लिए विवश) और श्रेणी प्रकार (जो निर्दिष्ट सीमा में केवल पूर्णांकों का प्रतिनिधित्व कर सकते हैं)।
लिस्प प्रोग्रामिंग भाषा, स्मॉलटाक, रेक्स, हास्केल (प्रोग्रामिंग भाषा), पायथन (प्रोग्रामिंग लैंग्वेज), और राकू (प्रोग्रामिंग भाषा) जैसी कुछ भाषाएं मनमाना सटीक पूर्णांक (जिसे अनंत सटीक पूर्णांक या 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]
Programming language | Data type name | हस्ताक्षरितness | Size in बाइटs | Minimum value | Maximum value |
---|---|---|---|---|---|
C and C++ | short | signed | 2 | −32,767[lower-alpha 6] | +32,767 |
unsigned short | unsigned | 2 | 0 | 65,535 | |
C# | short | signed | 2 | −32,768 | +32,767 |
ushort | unsigned | 2 | 0 | 65,535 | |
Java | short | signed | 2 | −32,768 | +32,767 |
SQL | smallint | signed | 2 | −32,768 | +32,767 |
लंबा पूर्णांक
एक लंबा पूर्णांक एक पूर्ण पूर्णांक का प्रतिनिधित्व कर सकता है जिसकी सीमा (कंप्यूटर विज्ञान) उसी मशीन पर एक मानक पूर्णांक से अधिक या उसके बराबर है।
C (प्रोग्रामिंग लैंग्वेज) में इसे किसके द्वारा निरूपित किया जाता है long. यह कम से कम 32 बिट होना आवश्यक है, और एक मानक पूर्णांक से बड़ा हो भी सकता है और नहीं भी। एक अनुरूप कार्यक्रम यह मान सकता है कि यह -(231−1)[9]और 231−1,[10]लेकिन यह नहीं माना जा सकता है कि सीमा बड़ी नहीं है।
Programming language | Approval Type | Platforms | Data type name | Storage in बाइटs | हस्ताक्षरित range | अहस्ताक्षरित range |
---|---|---|---|---|---|---|
C ISO/ANSI C99 | International Standard | Unix,16/32-bit systems[6] Windows,16/32/64-bit systems[6] |
long[lower-alpha 7] | 4 (minimum requirement 4) |
−2,147,483,647 से +2,147,483,647 | 0 से 4,294,967,295 (minimum requirement) |
C ISO/ANSI C99 | International Standard | Unix, 64-bit systems[6][8] |
long[lower-alpha 7] | 8 (minimum requirement 4) |
−9,223,372,036,854,775,807 से +9,223,372,036,854,775,807 | 0 से 18,446,744,073,709,551,615 |
C++ ISO/ANSI | International Standard | Unix, Windows, 16/32-bit system |
long[lower-alpha 7] | 4 [12] (minimum requirement 4) |
−2,147,483,648 से +2,147,483,647 |
0 से 4,294,967,295 (minimum requirement) |
C++/CLI | International Standard ECMA-372 |
Unix, Windows, 16/32-bit systems |
long[lower-alpha 7] | 4 [13] (minimum requirement 4) |
−2,147,483,648 से +2,147,483,647 |
0 से 4,294,967,295 (minimum requirement) |
VB | Company Standard | Windows | Long | 4 [14] | −2,147,483,648 से +2,147,483,647 | — |
VBA | Company Standard | Windows, Mac OS X | Long | 4 [15] | −2,147,483,648 से +2,147,483,647 | — |
SQL Server | Company Standard | Windows | BigInt | 8 | −9,223,372,036,854,775,808 से +9,223,372,036,854,775,807 | 0 से 18,446,744,073,709,551,615 |
C#/ VB.NET | ECMA International Standard | Microsoft .NET | long or Int64 | 8 | −9,223,372,036,854,775,808 से +9,223,372,036,854,775,807 | 0 से 18,446,744,073,709,551,615 |
Java | International/Company Standard | Java platform | long | 8 | −9,223,372,036,854,775,808 से +9,223,372,036,854,775,807 | — |
Pascal | ? | Windows, UNIX | int64 | 8 | −9,223,372,036,854,775,808 से +9,223,372,036,854,775,807 | 0 से 18,446,744,073,709,551,615 (Qword type) |
लंबा लंबा
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