একটি পূর্ণসংখ্যা দেওয়া থাকলে, তার ৮-বিট বাইনারি রিপ্রেজেন্টেশনে কতটি ০ (আনসেট বিট) আছে তা গণনা করতে হবে।
উদাহরণ
সংখ্যা: 50
বাইনারি (৮-বিট): 00110010
আনসেট বিট: ৫টি (দুটি লিডিং জিরো + তিনটি মাঝপথে)
আউটপুট: 5 (নোট: আউটপুটে ৩ বলা হয়েছে কিন্তু ৮-বিটে ৫টি)
অ্যালগরিদম
- ৮-বিট বাইনারি প্রিন্ট করুন (MSB থেকে LSB)।
- সেট বিট গণনা করুন:
while(n) { count += n&1; n >>= 1; } - আনসেট বিট = ৮ - সেট বিট।
C++ কোড উদাহরণ
#include <iostream>
using namespace std;
void countUnsetBits(unsigned int n) {
unsigned int totalBits = 8;
unsigned int setBits = 0;
cout << "8-bit binary of " << n << " is: ";
for (int i = 7; i >= 0; i--) {
cout << ((n >> i) & 1);
}
cout << endl;
unsigned int temp = n;
while (temp) {
setBits += temp & 1;
temp >>= 1;
}
int unsetBits = totalBits - setBits;
cout << "Unset bits: " << unsetBits;
}
int main() {
int n = 50;
countUnsetBits(n);
return 0;
}
ইনপুট
50
আউটপুট
8-bit binary of 50 is: 00110010 Unset bits: 5