मैं सी ++ में बिगइंटर क्लास को कार्यान्वित करने की कोशिश कर रहा हूं। लेकिन, सबसे पहले, मेरे पास एक मूल प्रश्न है, "बेस डेटा" का प्रतिनिधित्व कैसे किया जा सकता है? उदाहरण के लिए, सबसे बेवकूफ तरीका चार की एक निश्चित (या गतिशील) सरणी है और चार में एक पूर्णांक की प्रत्येक संख्या को स्टोर करना है। लेकिन, ठीक है, यह एक बहुत बेवकूफ तरीका है, और मैं यहां आपके सुझावों के लिए हूं।सी ++ बिग इंटीजर
उत्तर
वहाँ सुझावों की एक गुच्छा मौजूदा कार्यान्वयन के लिए यहां हैं: C++ handling very large integers
आप अपने खुद के (होमवर्क के लिए उदाहरण के लिए) को लागू करने की है, तो आप सबसे अच्छा तरीका तय करने के लिए है, और कैसे "बड़ी" आप की जरूरत है संभाल। आप डीडब्ल्यूओआरएस की एक सरणी का उपयोग कर सकते हैं, और एक से दूसरे तक बहने वाले हैंडल कर सकते हैं।
हालांकि, कुछ परियोजना यूलर सामग्री के लिए, मैंने वास्तव में एक स्ट्रिंग पर निर्मित बिग नम्बर क्लास को कार्यान्वित किया। यह + - */के लिए कार्यान्वित करने के लिए सबसे सरल साबित हुआ, और कुछ unsigned long long
एस के साथ प्राप्त होने से काफी अधिक संख्या में स्केल किया गया। और प्रदर्शन उन पहेली को हल करने के लिए पूरी तरह से पर्याप्त था।
तो, आप कार्यान्वयन और इष्टतम प्रदर्शन की आसानी के बीच एक व्यापार समझौते का सामना करते हैं। मज़े करें ;-)
आप वर्णन के तरीके में एक बड़ा पूर्णांक बना सकते हैं। वास्तव में, पहली बार मैंने इस तरह के एक वर्ग को लागू किया, यह वैसे ही मैंने किया है। इससे मुझे अंकगणितीय परिचालनों को लागू करने में मदद मिली (+
, -
, आदि) क्योंकि यह आधार (10) में था जिसका उपयोग मैंने किया था।
आपके "सरणी की सरणी" में प्राकृतिक वृद्धि इसे आधार 10 में रखना है, लेकिन पूरे बाइट की बजाय अंक के लिए 4 बिट्स का उपयोग करें। इस प्रकार, संख्या 123,456 स्ट्रिंग 123456
स्ट्रिंग के बजाय बाइट 12 34 56
द्वारा प्रदर्शित की जा सकती है। (छह बाइट्स के विपरीत तीन बाइट्स।)
वहां से, आप आधार दो में नंबर के लिए संग्रहण कर सकते हैं। बुनियादी अंकगणितीय परिचालन जैसे कि आधार 2 में समान रूप से समान रूप से समान कार्य करते हैं। इस प्रकार, संख्या 65565 बाइट FF FF
बाइट्स का उपयोग करके संग्रहीत किया जा सकता है। (unsigned char
एस के वेक्टर में, उदाहरण के लिए।) बिगइंट्स के कुछ कार्यान्वयन दक्षता के लिए short
या long
जैसे बड़े हिस्सों का उपयोग करते हैं।
बेस -10 बड़ी चींटियां उपयोगी हो सकती हैं यदि आप बेस -10 में बहुत सारे प्रदर्शन और/या क्रमबद्ध कर रहे हैं, और बेस -2 में रूपांतरण से बचना चाहते हैं।
- 1. डीजेंगो मॉडल में बिग इंटीजर फ़ील्ड
- 2. उद्देश्य-सी इंटीजर अंकगणित
- 3. सी ++ में इंटीजर डिवीजन 11
- 4. सी - जांचें कि इंटीजर को
- 5. सी # - बिग एंडियन में बाइनरी रीडर?
- 6. सी # बिग एंडियन उलंग 4 बाइट्स
- 7. क्या कोई बिग ओमेगा बनाम बिग थेटा बनाम बिग ओ समझा सकता है?
- 8. बिग क्वेरी
- 9. बिग ओ
- 10. बिग-ओ
- 11. इंटीजर कॉलम
- 12. एनएसपी्रेडिकेट इंटीजर
- 13. बिग डेटा विश्लेषण
- 14. बिग ओह नोटेशन
- 15. बिग मर्ज/मेमोरी प्रबंधन
- 16. ट्रिकी बिग-ओ जटिलता
- 17. एरलांग और बिग नंबर
- 18. जावा में बिग क्लास अपघटन
- 19. इंटीजर क्यूब रूट
- 20. लुआ इंटीजर प्रकार
- 21. Autoboxing: तो मैं लिख सकता हूँ: इंटीजर i = 0; इसके बजाय: इंटीजर i = नया इंटीजर (0);
- 22. जावा इंटीजर तुलना:
- 23. इंटीजर वैल्यू टू स्ट्रिंग
- 24. बाइनरी स्ट्रिंग टू इंटीजर
- 25. एसक्यूएल - इंटीजर टाइप - बिट
- 26. नया इंटीजर बनाम मूल्य
- 27. इंटीजर डाटाबेस इनपुट Sanitizing
- 28. एक इंटीजर नल बनाएं
- 29. आरजीबी मानों को इंटीजर
- 30. स्ट्रिंग टू इंटीजर स्मॉलटाक
संभावित डुप्लिकेट [सी ++ में बड़े int को कैसे कार्यान्वित करें] (http://stackoverflow.com/questions/269268/how-to-implement-big-int-in-c) – darioo
यदि आप बहु प्रदर्शन करना चाहते हैं -प्रसिद्ध गणित स्वयं, तो मेरा सुझाव है कि आप डोनाल्ड Knuth की [आर्ट ऑफ कंप्यूटर प्रोग्रामिंग] (https://en.wikipedia.org/wiki/The_Art_of_Computer_Programming) पर एक नज़र डालें। मेरा मानना है कि वॉल्यूम II, सेमिन्यूमेरिकल एल्गोरिदम, अध्याय 4, एकाधिक प्रेसिजन अंकगणित, आप इसमें रुचि रखते हैं। यह भी देखें [सी ++ में 2 मनमाने ढंग से आकार वाले पूर्णांक कैसे जोड़ें?] (Https://stackoverflow.com/q/2926219/608639), जो कुछ सी ++ पुस्तकालयों और ओपनएसएसएल के लिए कोड प्रदान करता है। – jww