এখানে আমরা দেখব কীভাবে একটি ইন্টিজার সংখ্যায় সেট বিটের সংখ্যা বের করা যায়। সেট বিট হলো একটি সংখ্যার বাইনারি রিপ্রেজেন্টেশনে ১ها। উদাহরণস্বরূপ, সংখ্যা ১৩-র তিনটি সেট বিট আছে ১১০১। তাই কাউন্ট হবে ৩।
এই সমস্যাটি সমাধানের জন্য আমরা সংখ্যাকে ডানে শিফ্ট করব, এবং যদি LSB ১ হয়, তবে কাউন্ট বাড়াব। যতক্ষণ না সংখ্যা ০ হয়, ততক্ষণ চলবে।
অ্যালগরিদম
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
উদাহরণ
#includeusing 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-তে কম্পাইল ও রান হবে, কিন্তু C++-তে কম্পাইল টাইমে এরর দেবে। এটি বলবে 너무나 argumentos are passed।