बिट पारी ऑपरेटरों के लिए एक परिचय:
सबसे पहले, हम बाएं पारी ऑपरेटर x << n
है,। , x >> n
1111 1111
<< 3: 1111 1000
इसके बाद, हम पर हस्ताक्षर किए हैं राइट पारी ऑपरेटर: यह x
में सभी बिट्स n
बिट्स द्वारा छोड़ा परिवर्तन होगा, शून्य के साथ नए बिट्स भरने। यह n द्वारा x
सही में सभी बिट्स बदलाव, नए बिट्स में संकेत बिट को कॉपी:
1111 1111
>> 3: 1111 1111
1000 0000
>> 3: 1111 0000
0111 1111
>> 3: 0000 1111
अंत में, हम शून्य को भरने के सही-शिफ्ट ऑपरेटर, x >>> n
है। यह सही n
बिट्स द्वारा x
में सभी बिट्स बदलाव, शून्य के साथ नए बिट्स भरने:
1111 1111
>>> 3: 0001 1111
तुम भी उपयोगी साबित हो सकते बिटवाइज़-या ऑपरेटर, x | y
।यह x
और y
में प्रत्येक स्थिति में बिट्स तुलना, अगर यह या तो x
या y
में पर था पर नया नंबर के बिट की स्थापना, अन्यथा बंद:
1010 0101
| 1010 1010
---------
1010 1111
आप हाथ में समस्या के लिए पिछले ऑपरेटरों केवल आवश्यकता चाहिए , लेकिन पूर्णता के लिए के लिए, यहाँ पिछले दो हैं:
बिटवाइज़-और ऑपरेटर, x & y
एक करने के लिए उत्पादन में बिट्स सेट करता है, तो और बिट दोनों x
और y
में पर है ही अगर:
1010 0101
& 1010 1010
---------
1010 0000
बिटवाइज़-XOR ऑपरेटर, x^y
एक करने के लिए उत्पादन बिट्स सेट करता है, तो थोड़ा अन्य लेकिन दोनों एक संख्या में चालू हो या:
1010 0101
^ 1010 1010
---------
0000 1111
अब, हाथ में स्थिति के लिए इन लागू करने:
बिट्स को जोड़ने और कुशलतापूर्वक जोड़ने के लिए आपको बिट-शिफ्ट ऑपरेटरों का उपयोग करने की आवश्यकता होगी। अपने स्ट्रिंग प्रस्तुतियों के अनुसार दाईं ओर बिट्स सेट करना प्रारंभ करें और उन्हें स्थानांतरित करें। तब तक जारी रखें जब तक आप बाइट के अंत को हिट न करें, और उसके बाद अगले बाइट पर जाएं। हम "1100 1010" का एक बाइट प्रतिनिधित्व बनाना चाहते हैं कहते हैं:
Our byte Target
--------- --------
0000 0000
1100 1010
0000 0001 ^
1100 1010
0000 0011 ^
1100 1010
0000 0110 ^
1100 1010
0000 1100 ^
1100 1010
0001 1001 ^
1100 1010
0011 0010 ^
1100 1010
0110 0101 ^
1100 1010
1100 1010 ^
मैं, ज़ाहिर है, यह आप पर छोड़ अपने काम करने के लिए इस लागू करने के लिए होगा।
आप "संपीड़ित बाइनरी प्रतिनिधित्व" के बारे में बात करते हैं तो कहें कि आपके पास एक 'स्ट्रिंग' है जो कि 18 वर्ण लंबा ("010100111111011000") है जो 7 वर्ण लंबा ("प्रोग्राम") शब्द का प्रतिनिधित्व करने के लिए है। क्या आप वाकई इसका मतलब है कि आप क्या पूछ रहे हैं? आम तौर पर आप उन बिट्स को एक्स बाइट्स (इस मामले में 3) में सेट करेंगे। –
'बिट शिफ्ट ऑपरेटर' देखें: '>>', '>>>', '<<'। – Kevin
ब्रायन, मूल संदेश 56 बिट आकार में है जब बाइनरी में अनुवाद किया गया है, एन्कोडेड संदेश केवल 18 बिट है। केविन, लोग मुझे यह कहते रहते रहते हैं, लेकिन मैं अभी भी उन ऑपरेटरों का उपयोग करने के बीच लिंक नहीं खींच सकता और इसे बाइट सरणी में अनुवाद करने में सक्षम हूं। –