java कहत एक बाइट से एक निश्चित स्थान पर बिट का मूल्य कैसे प्राप्त करें?




मेगाबाइट (4)

जावा में निम्नलिखित कार्य ठीक हैं:

if (value << ~x < 0) {
   // xth bit set
} else {
   // xth bit not set
}

value और x int या long हो सकता है (और समान होने की आवश्यकता नहीं है)।

गैर-जावा प्रोग्रामर के लिए सावधानी के शब्द : पूर्ववर्ती अभिव्यक्ति जावा में काम करती है क्योंकि उस भाषा में बिट शिफ्ट ऑपरेटर दाहिने हाथ की ओर वाले ऑपरेंड के 5 (या 6, long मामले में) सबसे कम बिट्स पर ही लागू होते हैं। यह स्पष्ट रूप से अभिव्यक्ति को value << (~x & 31) (या value << (~x & 63) यदि value long ) के लिए अभिव्यक्ति का अनुवाद करता है।

जावास्क्रिप्ट : यह जावास्क्रिप्ट में भी काम करता है (जावा की तरह, शिफ्ट काउंट के केवल सबसे कम 5 बिट्स लागू होते हैं)। जावास्क्रिप्ट में कोई भी number 32-बिट है।

विशेष रूप से सी में, नकारात्मक बदलाव की गिनती अपरिभाषित व्यवहार को आमंत्रित करती है, इसलिए यह परीक्षण आवश्यक रूप से काम नहीं करेगा (हालांकि यह संकलक / प्रोसेसर के आपके विशेष संयोजन पर निर्भर करता है)।

यदि मेरे पास एक बाइट है, तो विधि एक निश्चित स्थिति में थोड़ी पुनर्प्राप्त करने के लिए कैसे दिखेगी?

यहाँ मुझे पता है, और मुझे नहीं लगता कि यह काम करता है।

public byte getBit(int position) {
    return (byte) (ID >> (position - 1));
}

जहां ID बाइट का नाम है, वहां से मैं जानकारी प्राप्त कर रहा हूं।


आप थोड़ा सा मुखौटा बनाना चाहते हैं और बिटवाइज़ करते हैं और। जो आपके पास है उसे बहुत करीब से देखना होगा - उपयुक्त बिट सेट करने के लिए शिफ्ट का उपयोग करें, बिटवाइज़ ऑप करने के लिए उपयोग करें।

इसलिए

 return ((byte)ID) & (0x01 << pos) ;

जहाँ pos को 0 से 7 के बीच में रखना होता है। यदि आपके पास "बिट 1" के रूप में कम से कम महत्वपूर्ण बिट है, तो आपको अपने -1 आवश्यकता है, लेकिन मैं इसके खिलाफ सलाह दूंगा - स्थिति का इस तरह का परिवर्तन हमेशा त्रुटियों का स्रोत है मुझे।


public byte getBit(int position)
{
   return (ID >> position) & 1;
}

स्थिति के हिसाब से राइट शिफ्टिंग आईडी संख्या में दाईं ओर सबसे छोटी जगह होगी। बिट वाइज और 1 के साथ संयोजन करने पर आपको यह पता चल जाएगा कि बिट सेट है या नहीं।

position = 2
ID = 5 = 0000 0101 (in binary)
ID >> position = 0000 0001

0000 0001 & 0000 0001( 1 in binary ) = 1, because the furthest right bit is set.

पूर्णांक में nth बिट पाने के लिए

 return ((num >> (n-1)) & 1);




bit