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

C++-এ ১ যোগ করার পর বিট পরিবর্তনের সংখ্যা গণনা (Count bits changed after adding 1)


আমাদের একটি সংখ্যা num দেওয়া আছে। কাজ হল ১ যোগ করার পর বাইনারি রিপ্রেজেন্টেশনে কতগুলো বিট পরিবর্তন হয়েছে তা গণনা করা।

বাইনারি রিপ্রেজেন্টেশন হল সংখ্যাকে ০ এবং ১-তে রূপান্তর করা। বিটwise যোগফল টেবিল:

0 + 1 = 1
1 + 0 = 1
0 + 0 = 0
1 + 1 = 1 (1 বিট ক্যারি)

উদাহরণ:

ইনপুট: num = 10 → আউটপুট: count is: 1

ব্যাখ্যা: 10-এর বাইনারি = 1010, ১ যোগ করলে 1011। শুধু ১টি বিট পরিবর্তন।

ইনপুট: num = 5 → আউটপুট: count is: 2

ব্যাখ্যা: 5-এর বাইনারি = 101, ১ যোগ করলে 110। ২টি বিট পরিবর্তন।

অ্যালগরিদম

  • ইনপুট নিন int num-এ

  • XOR = num ^ (num + 1) করুন (XOR-এ ১ থাকা বিটগুলোই পরিবর্তন হয়েছে)

  • __builtin_popcount(XOR) দিয়ে সেট বিটের সংখ্যা গুনুন

  • ফলাফল রিটার্ন করুন

প্রোগ্রাম

#include <iostream> 
using namespace std; 

// পরিবর্তিত বিটের সংখ্যা বের করার ফাংশন 
int changedbit(int n) { 
    int XOR = n ^ (n + 1); 
    // XOR-এ সেট বিটের সংখ্যা গণনা 
    int count = __builtin_popcount(XOR); 
    return count; 
} 

int main() { 
    int n = 10; 
    cout << "count is: " << changedbit(n); 
    return 0; 
}

আউটপুট

count is: 1
  1. C++-এ দুটি সংখ্যা ভাগ করে দশমিকের পরের ডিজিটের সংখ্যা গণনা

  2. C++-এ হেক্সাডেসিমেল সংখ্যা গণনা

  3. দেওয়া সংখ্যার সেট বিট ব্যবহার করে ন্যূনতম সংখ্যা বের করা C++-তে

  4. C++-এ সেট বিট কাউন্ট অনুযায়ী অ্যারে সর্ট করা