কম্পিউটার টিউটোরিয়াল

সি/সি++ প্রোগ্রামে একটি ইন্টিজারের সেট বিট গণনা করা


সেট বিট গণনা মানে দেওয়া ইন্টিজারের বাইনারি রিপ্রেজেন্টেশনে ১-এর সংখ্যা গণনা করা। এর জন্য একাধিক সমাধান আছে। এই কেসে, আমাদের একটি বাইনারি নম্বর (ইন্টিজারের বাইনারি রিপ্রেজেন্টেশন) আছে, যার ১-দের সংখ্যা গণনা করতে হবে।

১-দের সংখ্যা গণনা করতে, স্ট্রিংটি নেওয়া, প্রতিটি এলিমেন্ট ট্রাভার্স করা এবং স্ট্রিংয়ের সব ১ গুনা হবে। উদাহরণস্বরূপ, ইনপুট ১৭ দিলে আউটপুট ২ হবে কারণ ১৭-এর বাইনারি ১০০০১ যাতে দুটি ১ আছে।

Input: Enter a positive integer: 6 Output: 2

ব্যাখ্যা

৬-এর বাইনারি রিপ্রেজেন্টেশন ১১০ যাতে ২টি সেট বিট আছে।

এই ইটারেটিভ পদ্ধতিতে প্রতি বিটের জন্য এক ইটারেশন লাগে। এটি নম্বরের সব বিটের মধ্য দিয়ে চলে। ইটারেশন তখন থামে যখন আর কোনো সেট বিট থাকে না। উর্স্ট কেসে, ৩২-বিট ওয়ার্ডে শুধু মোস্ট সিগনিফিক্যান্ট বিট সেট থাকলে, ৩২ বার লুপ ঘুরবে। এটি সবচেয়ে সহজ সমাধান এবং উপযোগী যখন ১-গুলো স্পার্স এবং লিস্ট সিগনিফিক্যান্ট বিটগুলোর মধ্যে থাকে।

উদাহরণ

#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. সি/সি++ প্রোগ্রামে ট্রায়্যাঙ্গুলার ম্যাচস্টিক নম্বর বের করা

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

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