मैं कुछ बिट एक लंबे मूल्य के साथ से लेकर उदाहरण के लिए, निकालने के लिए की जरूरत से थोड़ा पर्वतमाला मिलती है:जावा एक लंबे
long input = 15367 (11110000000111)
मैं क्या जरूरत के लिए तो मूल लंबे से दो लंबे मूल्यों को निकालने के लिए है,
First long is 5 bits starting from bit 0, so bits 0:4 = 7 (0111)
Second long is 56 bits starting from bit 8, so bits 7:55 = 60 (1111000)
मैं जानता हूँ कि यह थोड़ा स्थानांतरण और मास्किंग के साथ किया जा सकता है, लेकिन मैं पूरी तरह यकीन है कि लागू करने के लिए कैसे तो यह हर बार गतिशील है, हर बार के रूप में मैं यह करने की आवश्यकता नहीं कर रहा हूँ, लंबे समय से अलग होगा , और इसी तरह विशिष्ट बिट सीमा भी होगी।
मैं बिट्ससेट्स और बिटअरेज़ के बारे में पढ़ रहा हूं, हालांकि मुझे पूरी तरह से यकीन नहीं है कि यह नौकरी के लिए सही चीजें हैं।
इसे लागू करने के सर्वोत्तम तरीके पर कोई सलाह बहुत सराहना की जाएगी।
धन्यवाद!
बस टिकट, धन्यवाद fge! – Tony
'>>' काम भी नहीं करेगा क्योंकि अंत में '&' संकेत विस्तारित '1' को हटा देगा? (आपके पक्ष में कोने का मामला: आप अपने इनपुट की बाएं सीमाओं के बाहर बिट्स निकालते हैं, उदाहरण के लिए nrBits = 32, ऑफ़सेट> 32) – zapl
नहीं, ऐसा नहीं होगा। कहें (सरल बनाने के लिए 8 बिट्स के साथ) कि आपके पास '10001111' है और ऑफसेट 3 से शुरू होने वाली तीन बिट निकालना चाहता था: यदि आप '>>' का उपयोग करते हैं, तो सही शिफ्ट '00010001' देता है, लेकिन' >> 'के साथ '11110001' दें (साइन बिट ले जाया गया है)। – fge