2010-08-23 17 views
5

के बीच रूपांतरण के लिए कुशल एल्गोरिदम क्या संख्या पूर्णांक के बीच रूपांतरण के लिए कोई कुशल एल्गोरिदम है जब स्रोत पूर्णांक का आकार मनमाने ढंग से होता है?संख्या प्रणाली

उदाहरण के लिए, मान लें कि एक पूर्णांक सरणी {1, 4, 8} है जो इनपुट के रूप में दशमलव प्रारूप में 148 है। इसे हेक्साडेसिमल प्रारूप में {9, 4}, या {2, 2, 4} में ऑक्टल में, या {1, 0, 0, 1, 0, 1, 0, 0} में बाइनरी प्रारूप में परिवर्तित किया जा सकता है, या बस { 148} 1234-आरी प्रारूप या कुछ में।

यह आसान है जब वास्तविक मूल्य मशीन द्वारा समर्थित शब्द-आकार में व्यक्त किया जा सकता है। लेकिन जब यह मनमाने ढंग से आकार में जाता है, तो मुझे ओ (एन^2) से बेहतर तरीका नहीं मिल रहा है।

+0

ओ (एन) में संभव होना चाहिए। आप math.stackexchange.com पर भी कोशिश कर सकते हैं (भी)। –

उत्तर

3

फूट डालो आधार से, मॉड्यूल को पीछे धकेलने कुल्ला और जब तक भागफल दोहराने! = 0.

तो, उदाहरण के लिए आधार में 16

148/16 = 9 r 4 
    9/16 = 0 r 9 

तो 148 कनवर्ट करते हैं, हेक्स में 148 0x94 है । यह इतना लंबा नहीं लेना चाहिए।

+0

दुर्भाग्यवश, यह इतना आसान नहीं है जब कोई संख्या पर्याप्त हो - 10^100 के बारे में सोचें, जिसे वर्तमान कंप्यूटर आर्किटेक्चर में 1 परमाणु पूर्णांक में प्रदर्शित नहीं किया जा सकता है। – summerlight

+0

बेशक, big_int वर्ग जैसे कुछ अमूर्तता का उपयोग किया जा सकता है, लेकिन यह समस्या को और भी खराब कर देता है, क्योंकि मॉड्यूलर और डिवीजन ऑपरेशन की समय जटिलता ओ (एन^2) है और हमें ओ (एन) मॉड्यूलर और डिवीजन ऑपरेशन की आवश्यकता है रूपांतरण। – summerlight

संबंधित मुद्दे