কম্পিউটার

একটি সংখ্যার প্রতিটি সেট বিটের জন্য C++ এ অন্যের বিট টগল করুন


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

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক

Input: 3 7
Output: 4
Binary of 3: 011
Binary of 3: 111

দ্বিতীয় সংখ্যার প্রথম এবং দ্বিতীয় বিটগুলি ফ্লিপ করা হয় যা এটিকে 100 অর্থাৎ 4 করে তোলে।

সমাধান পদ্ধতি

সমস্যা সমাধানের একটি পদ্ধতি হল দুটি সংখ্যার XOR অপারেশন করে। XOR অপারেশন ব্যবহার করে I’st এর বিট 1 হলে ফলাফল বিটের জন্য টগল করা হবে।

উদাহরণ

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম

#include <bits/stdc++.h>
using namespace std;

int main(){
   int a = 3, b = 7;
   cout<<"The numbers are "<<a<<" & "<<b<<endl;
   cout<<"The result of flipping bits is "<<(a ^ b);
   return 0;
}

আউটপুট

The numbers are 3 & 7
The result of flipping bits is 4

  1. একটি সংখ্যার C++ এ একই সংখ্যক সেট এবং আনসেট বিট আছে কিনা তা পরীক্ষা করুন

  2. C++ এ সেট বিটের গণনা অনুসারে একটি অ্যারে সাজান

  3. C++ এ k সেট বিট সহ একটি সংখ্যাকে সর্বাধিক করার জন্য ন্যূনতম ফ্লিপস প্রয়োজন।

  4. আপনি কিভাবে C/C++ এ কিছুটা সেট, পরিষ্কার এবং টগল করবেন?