কম্পিউটার

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


সেট বিট গণনা মানে প্রদত্ত পূর্ণসংখ্যার 1’S গণনা করা। এর জন্য, আমাদের কাছে একাধিক সমাধান রয়েছে যা প্রয়োগ করা যেতে পারে। এই ক্ষেত্রে, আমাদের একটি বাইনারি সংখ্যা (একটি পূর্ণসংখ্যার বাইনারি উপস্থাপনা), যার জন্য আমাদের স্ট্রিং থেকে 1 এর সংখ্যা গণনা করতে হবে।

1 এর সংখ্যা গণনা করতে, আমরা স্ট্রিংটি নেব, প্রতিটি উপাদান অতিক্রম করব এবং স্ট্রিংয়ের সমস্ত 1 গণনা করব। উদাহরণস্বরূপ, যদি আমরা 17 ইনপুট করি তাহলে আউটপুট হবে 2 কারণ 17-এর বাইনারি হল 10001 যাতে দুটি 1 থাকে।

Input: Enter a positive integer: 6
Output: 2

ব্যাখ্যা

6 এর বাইনারি উপস্থাপনা হল 110 যার 2 সেট বিট রয়েছে

এই পুনরাবৃত্তিমূলক পদ্ধতির জন্য বিট প্রতি একটি পুনরাবৃত্তি প্রয়োজন। এটি সংখ্যার সমস্ত বিটের মাধ্যমে চলে। আর কোন বিট সেট না হলে পুনরাবৃত্তি বন্ধ হয়ে যায়। সবচেয়ে খারাপ ক্ষেত্রে, শুধুমাত্র সবচেয়ে উল্লেখযোগ্য বিট সেট সহ একটি 32-বিট শব্দে, এটি 32টি পুনরাবৃত্তির মাধ্যমে লুপ করবে। এই সমাধানটি সবচেয়ে সহজ এবং উপযোগী যদি 1টি বিক্ষিপ্ত হয় এবং সবচেয়ে কম গুরুত্বপূর্ণ বিটের মধ্যে থাকে।

উদাহরণ

#include <stdio.h>
int main(void) {
   unsigned int n = 34;
   for (c = 0; n; n >>= 1) {
      c += n & 1;
   }
   printf("%d\n", c);
}

  1. সি/সি++ প্রোগ্রাম মার্জ সর্ট ব্যবহার করে একটি অ্যারের মধ্যে বিপরীতমুখী গণনা করতে?

  2. ত্রিভুজাকার ম্যাচস্টিক নম্বরের জন্য C/C++ প্রোগ্রাম?

  3. জাভা প্রোগ্রাম একটি পূর্ণসংখ্যা সেট বিট গণনা

  4. পাইথন প্রোগ্রাম একটি পূর্ণসংখ্যা সেট বিট গণনা