এখানে আমরা দেখব কিভাবে আমরা একটি পূর্ণসংখ্যার সেট বিটের সংখ্যা পরীক্ষা করতে পারি। একটি সংখ্যার বাইনারি উপস্থাপনায় সেট বিটগুলি হল 1। উদাহরণস্বরূপ 13 নম্বরটিতে তিনটি সেট বিট 1101 আছে। তাই গণনা হবে 3।
এই সমস্যাটি সমাধান করার জন্য, আমরা সংখ্যাটিকে ডানদিকে স্থানান্তর করব এবং যদি LSb 1 হয়, তাহলে গণনা বাড়াব। সংখ্যাটি 0 না হওয়া পর্যন্ত এটি চলবে৷
অ্যালগরিদম
countSetBit()
begin count := 0 while count is not 0, do if LSb of n is set, then count := count + 1 end if n := n after shifting 1 bit to right done return count end
উদাহরণ
#include<iostream> using namespace std; int count_set_bit(int n) { int count = 0; while(n != 0) { if(n & 1 == 1) { count++; } n = n >> 1; //right shift 1 bit } return count; } int main() { int n; cout << "Enter a number: "; cin >> n; cout << "Number of set bits: " << count_set_bit(n); }
আউটপুট
Enter a number: 29 Number of set bits: 4
এই প্রোগ্রামটি সি তে চলবে এবং আউটপুট জেনারেট করবে, কিন্তু যখন আমরা C++ এ কম্পাইল করতে চাই, এটি কম্পাইলের সময় একটি ত্রুটি ফিরিয়ে দেবে। এটা বলবে অনেক আর্গুমেন্ট পাস হয়েছে।