बाइनरी में परिवर्तित होने पर दी गई सकारात्मक संख्या में कई सेटबिट होते हैं। बाइनरी नंबर में सेट बिट्स को 1 द्वारा दर्शाया जाता है। इस लेख में हम देखेंगे कि बाइनरी वैल्यू में परिवर्तित होने के बाद किसी दिए गए नंबर में सेटबिट्स की संख्या कैसे प्राप्त करें।
बिन और स्लाइसिंग का उपयोग करना
नीचे दिए गए उदाहरण में हम एक संख्या लेते हैं और बाइनरी मान प्राप्त करने के लिए बिन फ़ंक्शन लागू करते हैं। फिर हम बाइनरी नंबर में जोड़े गए उपसर्गों को हटाने के लिए इसे स्लाइस करते हैं और फिर सेटबिट्स का कोटन प्राप्त करने के लिए रेंज फ़ंक्शन लागू करते हैं।
उदाहरण
def SetBits_cnt(n, l, r): bin_val = bin(n) # Remove '0b' prefixed in bin_val conversion bin_val = bin_val[2:] print(bin_val) # reverse string bin_val = bin_val[-1::-1] # count all set bit '1' starting from index l-1 print(len([bin_val[i] for i in range(l - 1, r) if bin_val[i] == '1'])) SetBits_cnt(83,1,6)
आउटपुट
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
1010011 3
बिटवाइज का उपयोग करना
बिटवाइज़ ऑपरेटर का उपयोग सेटबिट प्राप्त करने के लिए भी किया जा सकता है। नीचे दिए गए उदाहरण में हम पहले बिटवाइज़ ऑपरेटर को रेंज को ध्यान में रखते हुए लागू करते हैं और फिर इसे दूसरे फ़ंक्शन पर पास करते हैं जो केवल सेट बिट्स की गणना करता है।
उदाहरण
def trackBitsInRange(n, l, r): # using bitwise operator bit_num = ((1 << r) - 1) ^ ((1 << (l - 1)) - 1) # After bitwise operation count the set bits return trackSetBits(n & bit_num) def trackSetBits(n): count = 0 while (n): n &= (n - 1) count = count + 1 return count print(trackBitsInRange(83,1,6))
आउटपुट
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
3