Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में एक रेंज में सेट बिट्स गिनें


एक दी गई धनात्मक संख्या जब बाइनरी में परिवर्तित होती है, तो इसमें कई सेट बिट्स होते हैं। बाइनरी संख्या में सेट बिट्स को 1 द्वारा दर्शाया जाता है। इस लेख में हम देखेंगे कि बाइनरी मान में परिवर्तित होने के बाद दी गई संख्या में सेट बिट्स की संख्या कैसे प्राप्त करें।

bin और स्लाइसिंग का उपयोग करके

नीचे दिए गए उदाहरण में हम एक संख्या लेते हैं और बाइनरी मान प्राप्त करने के लिए bin फ़ंक्शन लागू करते हैं। फिर हम बाइनरी संख्या में जोड़े गए प्रीफिक्स को हटाने के लिए इसे स्लाइस करते हैं और फिर सेट बिट्स की गिनती प्राप्त करने के लिए रेंज फ़ंक्शन लागू करते हैं।

उदाहरण

def SetBits_cnt(n, l, r):
    bin_val = bin(n)
    # bin_val रूपांतरण में '0b' प्रीफिक्स हटाएं
    bin_val = bin_val[2:]
    print(bin_val)
    # स्ट्रिंग उल्टा करें
    bin_val = bin_val[-1::-1]
    # इंडेक्स l-1 से शुरू करके सभी सेट बिट '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):
    # बिटवाइज ऑपरेटर का उपयोग करके
    bit_num = ((1 << r) - 1) ^ ((1 << (l - 1)) - 1)
    # बिटवाइज ऑपरेशन के बाद सेट बिट्स गिनें
    return trackSetBits(n & bit_num)

def trackSetBits(n):
    count = 0
    while n:
        n &= (n - 1)
        count += 1
    return count

print(trackBitsInRange(83, 1, 6))

आउटपुट

3
  1. - पायथन प्रोग्राम: 1 से n तक सभी नंबर्स में टोटल सेट बिट्स गिनना

    एक पॉजिटिव इंटीजर n दिया गया है, फिर हम इसे बाइनरी प्रतिनिधित्व में बदलते हैं और टोटल सेट बिट्स की संख्या गिनते हैं।उदाहरणInput: n=3 Output: 4एल्गोरिदमचरण 1: पॉजिटिव इंटीजर डेटा इनपुट करें। चरण 2: फिर इसे बाइनरी फॉर्म में कन्वर्ट करें। चरण 3: वेरिएबल s = 0 इनिशियलाइज़ करें। चरण 4: हर एलिमेंट को ट्रै

  1. - एक रेंज में अनसेट बिट्स गिनने के लिए पायथन प्रोग्राम

    समस्या विवरण एक धनात्मक संख्या और बिट्स की रेंज दी गई है। हमारा कार्य उस रेंज में अनसेट बिट्स (0) की संख्या गिनना है। उदाहरण इनपुट: n = 50, प्रारंभिक पता = 2, अंतिम पता = 5 आउटपुट: 2 रेंज 2 से 5 में 2 अनसेट बिट्स हैं। एल्गोरिदम bin() का उपयोग करके n को बाइनरी में बदलें। पहले दो वर्ण (0b) हटाएं।

  1. - संख्या में कुल बिट्स गिनने के लिए पायथन प्रोग्राम

    समस्या विवरण सबसे पहले हम एक संख्या इनपुट करते हैं फिर bin() फंक्शन का उपयोग करके इस संख्या को बाइनरी में बदलते हैं और अगला आउटपुट स्ट्रिंग के पहले दो वर्ण 0b को हटाते हैं, फिर बाइनरी स्ट्रिंग की लंबाई की गणना करते हैं। उदाहरण इनपुट: 200 आउटपुट: 8 व्याख्या 200 का बाइनरी प्रतिनिधित्व 11001000 है