কম্পিউটার

C++ এ একটি সংখ্যার বিট বিপরীত করার জন্য একটি দক্ষ সি প্রোগ্রাম লিখুন


এই সমস্যায়, আমরা একটি স্বাক্ষরবিহীন পূর্ণসংখ্যা n দেওয়া হয়. আমাদের কাজ হল এমন একটি প্রোগ্রাম তৈরি করা যা নম্বরটি ফেরত দেয় যা নম্বরের সমস্ত বিটকে উল্টে দিয়ে জেনারেট করা হয়।

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

ইনপুট

n = 1

আউটপুট

2147483648

ব্যাখ্যা

binary of 1 is 000...0001, the reverse is 100...0000.

এই সমস্যাটি সমাধান করার জন্য, আমরা একটি সহজ সমাধান ব্যবহার করব। আমরা সংখ্যার বাইনারি দিয়ে লুপ করব। এবং সংখ্যার মধ্যে সেট বিটের অবস্থান খুঁজে বের করা যাক এটা বলা যাক i. ফলাফলটি সূত্র ব্যবহার করে গণনা করা হবে, ((total_number_of_bits) - 1) - i

এই অ্যালগরিদমের বাস্তবায়ন দেখানোর জন্য প্রোগ্রাম,

উদাহরণ

#include<iostream>
using namespace std;
unsigned int reverseBitNumber(unsigned int num) {
   unsigned int totalNumberOfBits = sizeof(num) * 8;
   unsigned int reverseNumber = 0, temp;
   for (int i = 0; i < totalNumberOfBits; i++){
      if((num & (1 << i)))
         reverseNumber |= (1 << ((totalNumberOfBits - 1) - i));
   }
   return reverseNumber;
}
int main() {
   unsigned int n = 21;
   cout<<"The number is "<<n<<endl;
   cout<<"The number which has reverse bits of the number is :"<<reverseBitNumber(n);
   return 0;
}

আউটপুট

The number is 2
The number which has reverse bits of the number is :2818572288

পদ্ধতি 2

আরেকটি পদ্ধতি হল শিফটিং ব্যবহার করা, আমরা সংখ্যার বিটগুলিকে স্থানান্তর করব যতক্ষণ না এটি শূন্য হয়ে যায় এবং তাদের বিপরীত সংখ্যায় স্থানান্তরিত করব এবং তারপর ফলাফল পেতে বাকি বিটগুলিকে বার বার স্থানান্তর করব।

আমাদের সমাধানের বাস্তবায়ন দেখানোর জন্য প্রোগ্রাম,

উদাহরণ

#include<iostream>
using namespace std;
unsigned int reverseBitNumber(unsigned int n){
   unsigned int rem_shift = sizeof(n) * 8 - 1;
   unsigned int reverseNubmer = n;
   n >>= 1;
   while(n){
      reverseNubmer <<= 1;
      reverseNubmer |= n & 1;
      n >>= 1;
      rem_shift--;
   }
   reverseNubmer <<= rem_shift;
   return reverseNubmer;
}
int main(){
   unsigned int n = 21;
   cout<<"The number is "<<n<<endl;
   cout<<"The number which has reverse bits of the number is :"<<reverseBitNumber(n);
   return 0;
}

আউটপুট

The number is 21
The number which has reverse bits of the number is :2818572288

  1. রিভার্স অ্যারে করার জন্য একটি সি প্রোগ্রাম লিখুন

  2. C++ এ রিভার্স বিট

  3. পাইথন প্রোগ্রাম একটি ইতিবাচক পূর্ণসংখ্যা সংখ্যার বিট বিপরীত?

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