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