কম্পিউটার

পাইথন কাউন্ট একটি পরিসরে বিট সেট?


একটি প্রদত্ত ধনাত্মক সংখ্যা যখন বাইনারিতে রূপান্তরিত হয়, তখন তার অনেকগুলি সেটবিট থাকে। একটি বাইনারি সংখ্যার সেট বিটগুলি 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

bitwise ব্যবহার করা

সেটবিট পেতে বিটওয়াইজ অপারেটরও ব্যবহার করা যেতে পারে। নীচের উদাহরণে আমরা প্রথমে বিটওয়াইজ অপারেটর প্রয়োগ করি পরিসরটি বিবেচনায় নিয়ে এবং তারপর এটিকে অন্য একটি ফাংশনে প্রেরণ করি যা শুধুমাত্র সেট বিট গণনা করে৷

উদাহরণ

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

  1. Python List কম্প্রিহেনশন ব্যবহার করে সেট বিট গণনা করুন

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

  3. একটি পরিসরে আনসেট বিট গণনা করার জন্য পাইথন প্রোগ্রাম।

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