একটি পূর্ণসংখ্যা দেওয়া আছে। এর বাইনারি রিপ্রেজেন্টেশনে কতটি বিট (০ ও ১ মিলিয়ে) আছে তা বের করুন। লিডিং জিরো বাদ দেওয়া হয়।
উদাহরণ
num=50 → Binary: 110010 → ৬টি বিট
num=10 → Binary: 1010 → ৪টি বিট
পদ্ধতিগুলো
১. লুপ দিয়ে (O(log n))
while (num) {
count++;
num >>= 1;
}
২. লগারিদম ব্যবহার করে (O(1))
if (num == 0) return 1;
return floor(log2(num)) + 1;
৩. বিল্ট-ইন ফাংশন
32 - __builtin_clz(num); // 32-বিট ইন্টের জন্য
64 - __builtin_clzll(num); // 64-বিটের জন্য
C++ বাস্তবায়ন
#include
using namespace std;
unsigned int totalBits(unsigned int num) {
if (num == 0) return 1;
unsigned int count = 0;
while (num) {
count++;
num >>= 1;
}
return count;
}
int main() {
int num = 50;
cout << "Total bits: " << totalBits(num);
return 0;
}
দ্রষ্টব্য
আর্টিকেলে "8-bit digits" প্রিন্ট করা হয়েছে যা ফিক্সড উইন্ডো, কিন্তু একচুয়াল বিট দৈর্ঘ্য ভিন্ন।