কম্পিউটার টিউটোরিয়াল

পাইথনে একটি সংখ্যার নির্দিষ্ট রেঞ্জের সেট বিট (Set Bits) গণনা

একটি পজিটিভ সংখ্যার বাইনারি রিপ্রেজেন্টেশনে নির্দিত রেঞ্জ (L থেকে R) এ কতটি সেট বিট (১) আছে তা বের করার দুটি পদ্ধতি।

১. bin() ও স্লাইসিং ব্যবহার

  1. bin(n) দিয়ে বাইনারি স্ট্রিং বানান।
  2. [2:] দিয়ে '0b' বাদ দিন।
  3. স্ট্রিং রিভার্স করুন (LSB প্রথমে আসার জন্য)।
  4. ইনডেক্স l-1 থেকে r-1 পর্যন্ত '১' গণনা করুন।

উদাহরণ

def SetBits_cnt(n, l, r):
    bin_val = bin(n)[2:]
    bin_val = bin_val[::-1]
    print(len([bin_val[i] for i in range(l-1, r) if bin_val[i] == '1']))

SetBits_cnt(83, 1, 6)
# Output: 3

২. বিটওয়াইজ অপারেটর ব্যবহার

  1. bit_num = ((1 << r) - 1) ^ ((1 << (l-1)) - 1) দিয়ে রেঞ্জের মাস্ক বানান।
  2. n & bit_num দিয়ে রেঞ্জের বিটগুলো আলাদা করুন।
  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))  # Output: 3
  1. পাইথন লিস্ট কম্প্রিহেনশন ব্যবহার করে সেট বিট কাউন্ট করা

  2. পাইথন প্রোগ্রাম: ১ থেকে n পর্যন্ত সকল সংখ্যার টোটাল সেট বিট গণনা

  3. পাইথনে নির্দিষ্ট বিট পরিসরের অনসেট বিট গণনা করার প্রোগ্রাম

  4. পাইথনে একটি সংখ্যার টোটাল বিট গণনা করার প্রোগ্রাম