কম্পিউটার

C++ এ একটি বড় বাইনারি সংখ্যায় 1 বিটের সংখ্যা খুঁজুন


একটি 32-বিট আনসাইনড বাইনারি নম্বর দেওয়া হয়েছে, কাজটি হল সেট বিটগুলি গণনা করা, যেমন, এতে '1' রয়েছে৷

উদাহরণস্বরূপ

ইনপুট:

N = 00000000000000100111

আউটপুট:

4

ব্যাখ্যা: প্রদত্ত স্বাক্ষরবিহীন সংখ্যায় উপস্থিত মোট সেট বিট হল 4, এইভাবে আমরা '4' হিসাবে আউটপুট ফেরত দেব।

এই সমস্যা সমাধানের পদ্ধতি

আমরা একটি স্বাক্ষরবিহীন 32-বিট বাইনারি নম্বর দিয়েছি। কাজ হল এতে কতগুলি '1' আছে তা গণনা করা।

প্রদত্ত বাইনারি সংখ্যায় '1'-এর সংখ্যা গণনা করতে, আমরা অন্তর্নির্মিত STL ফাংশন '__builin_popcount(n)' ব্যবহার করতে পারি যা ইনপুট প্যারামিটার হিসাবে একটি বাইনারি নম্বর নেয়।

  • ইনপুট হিসাবে একটি বাইনারি সংখ্যা N নিন।
  • একটি ফাংশন count1Bit(uint32_t n) ইনপুট হিসাবে একটি 32-বিট বাইনারি সংখ্যা নেয় এবং বাইনারি সংখ্যায় উপস্থিত '1' এর গণনা প্রদান করে।
  • ইনবিল্ট ফাংশন __builtin_popcount(n) একটি প্যারামিটার হিসাবে 'n' এর ইনপুট নেয় এবং গণনা প্রদান করে।

উদাহরণ

#include<bits/stdc++.h>
using namespace std;
int count1bits(uint32_t n) {
   return bitset < 32 > (n).count();
}
int main() {
   uint32_t N = 0000000010100000011;
   cout << count1bits(N) << endl;
   return 0;
}

উপরের কোডটি চালানোর ফলে আউটপুট তৈরি হবে,

আউটপুট

4

প্রদত্ত সংখ্যাটিতে, 4 সেট বিট বা '1s' উপস্থিত রয়েছে। সুতরাং, আউটপুট হল '4'।


  1. C++ ব্যবহার করে পঞ্চভুজ পিরামিডাল নম্বর খুঁজুন

  2. C++ ব্যবহার করে একটি স্ট্রিং এর সাবস্ট্রিং এর সংখ্যা খুঁজুন

  3. C++ ব্যবহার করে স্টপিং স্টেশনের সংখ্যা খুঁজুন

  4. C++ প্রোগ্রামিং-এ বাইনারি ট্রির প্রতিটি নোডে সেট বিটের সংখ্যা প্রিন্ট করুন।