2013-01-03 8 views

उत्तर

56

का उपयोग बिटवाइज़ ऑपरेटर्स:

int getBit(int n, int k) { 
    return (n >> k) & 1; 
} 

स्पष्टीकरण (बिट्स में):

n 
100010101011101010 (example) 
n >> 5 
000001000101010111 (all bits are moved over 5 spots, therefore 
&     the bit you want is at the end) 
000000000000000001 (0 means it will always be 0, 
=     1 means that it will keep the old value) 
1 
+1

इस 0 सा अधिकार के रूप में कम से कम महत्वपूर्ण बिट से शुरू कर रहा है चाहते हैं? – user1921187

+0

@ user1921187 हाँ, यह है। 'getBit (0b10001, 0)' '1' वापस करेगा, और 'getBit (0b10001, 1)' ''' वापस आ जाएगा। – Doorknob

+0

ठीक है, अगर मैं getBit (n, 0) चलाता हूं, तो मुझे दाएं से दूसरी बिट मिल जाएगी। तो k = 0 वास्तव में मुझे कम से कम महत्वपूर्ण बिट मिलेगा, इसलिए यह 0 वां बिट है। क्या मैं कुछ गलत देख रहा हूँ? – user1921187

7
return (n >> k) & 1; 

यहाँ, n >> k कम से कम महत्वपूर्ण स्थिति में k वें सा बदलाव, और & 1 मास्क बाहर सब कुछ।

4

सबसे कम महत्वपूर्ण बिट बिट संख्या 0 है:

return (n>>k)&1; 
0

तुम भी मॉड्यूल का उपयोग कर सकते हैं इसके लिए संपत्ति। यदि आपकी संख्या भी सबसे कम महत्वपूर्ण बिट शून्य है, अन्यथा (विषम) एक है।

return (n>>k)%2; 
1

या उपयोग:

boolean getBit(int n, int k) { 
    return (((n >> k) & 1) == 1 ? true:false); 
} 

आप एक बूलियन मान

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