जैसा कि आप में से अधिकांश शायद जानते हैं, (बाइट-पता करने योग्य) हार्डवेयर यादों को दो श्रेणियों में विभाजित किया जा सकता है - थोड़ा-एंडियन और बड़ा-एंडियन । छोटी-एंडियन यादों में बाइट्स को 0 से शुरू करके छोटे (सबसे महत्वपूर्ण) छोर पर और बड़े-एंडियन में दूसरे तरीके से गोल किया जाता है।
मजेदार तथ्य : ये शब्द जोनाथन स्विफ्ट की पुस्तक गुलिवर्स ट्रेवल्स पर आधारित हैं, जहां लिलिपुटियन राजा ने अपने नागरिकों को अपने अंडे छोटे छोर (इस तरह छोटे-एंडियन) पर तोड़ने का आदेश दिया था और विद्रोही उनके बड़े अंत को तोड़ देंगे।
स्वैपिंग कैसे काम करती है
मान लीजिए कि हमारे पास 12648430
मेमोरी में एक अहस्ताक्षरित पूर्णांक (32 बिट) है, एक बड़ी-एंडियन मशीन में जो निम्नानुसार दिख सकती है:
addr: 0 1 2 3
memory: 00 C0 FF EE
बाइट-ऑर्डर को प्राप्त करने से हमें हेक्साडेसिमल पूर्णांक मिलता है 0xEEFFC000
जो 4009738240
दशमलव में है।
आपका कार्य
एक प्रोग्राम / फ़ंक्शन लिखें जो दशमलव में एक अहस्ताक्षरित 32 बिट पूर्णांक प्राप्त करता है और परिणामी पूर्णांक को आउटपुट करता है जब ऊपर वर्णित अंतरण को स्वैप किया जाता है।
नियम
- इनपुट हमेशा रेंज में हो जाएगा
0
करने के लिए4294967295
- आउटपुट को STDOUT में प्रिंट किया जा सकता है
- इनपुट और आउटपुट दशमलव में हैं
- अमान्य इनपुट पर व्यवहार को अपरिभाषित छोड़ दिया जाता है
परीक्षण के मामलों
0 -> 0
1 -> 16777216
42 -> 704643072
128 -> 2147483648
12648430 -> 4009738240
16885952 -> 3232235777
704643072 -> 42
3735928559 -> 4022250974
4009738240 -> 12648430
4026531839 -> 4294967279
4294967295 -> 4294967295
42
दशमलव में दिया गया है, लेकिन तकनीकी रूप से यह उदाहरण के लिए C में बाइनरी है। आप निश्चित रूप से टाइप कर सकते हैं 0x2a
, जो मैं रोकना चाहता था वह इनपुट को स्ट्रिंग की तरह "2a"
या जैसे ले रहा है।