কম্পিউটার

C/C++ প্রোগ্রাম একটি পূর্ণসংখ্যা সেট বিট গণনা?


এখানে আমরা দেখব কিভাবে আমরা একটি পূর্ণসংখ্যার সেট বিটের সংখ্যা পরীক্ষা করতে পারি। একটি সংখ্যার বাইনারি উপস্থাপনায় সেট বিটগুলি হল 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++ এ কম্পাইল করতে চাই, এটি কম্পাইলের সময় একটি ত্রুটি ফিরিয়ে দেবে। এটা বলবে অনেক আর্গুমেন্ট পাস হয়েছে।


  1. পরপর 1 ছাড়া বাইনারি স্ট্রিং সংখ্যা গণনা করার জন্য C/C++ প্রোগ্রাম?

  2. nম কাতালান নম্বরের জন্য C/C++ প্রোগ্রাম?

  3. C/C++ প্রোগ্রামটি একটি সংখ্যার ফ্যাক্টোরিয়ালের মধ্যে শূন্য গুনতে হয়?

  4. সি-তে ফ্লোটিং পয়েন্ট নম্বরে সেট বিটগুলি কীভাবে গণনা করবেন?