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

সি++-তে বিট রিভার্স

একটি ৩২-বিট আনসাইনড ইন্টিজার দেওয়া থাকে। এর বাইনারি রিপ্রেজেন্টেশনের বিটগুলো রিভার্স করতে হবে। উদাহরণ: 00000000000000000000001001110100 রিভার্স করলে 00101110010000000000000000000000 হয়। রিভার্স করা বিটের ডেসিম্যাল মান রিটার্ন করতে হবে।

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

  1. ans = 0 ইনিশিয়ালাইজ করুন।
  2. for i = 31 down to 0 লুপ চালান:
    • ans |= (n & 1) << i।
    • n >>= 1।
  3. ans রিটার্ন করুন।

উদাহরণ কোড (C++)

#include 
using namespace std;
class Solution {
public:
    uint32_t reverseBits(uint32_t n) {
        uint32_t ans = 0;
        for(int i = 31; i >= 0; i--){
            ans |= (n & 1) << i;
            n >>= 1;
        }
        return ans;
    }
};
main(){
    Solution ob;
    cout << ob.reverseBits(0b00000000000000000000001001110100);
}

ইনপুট

0b00000000000000000000001001110100

আউটপুট

775946240
  1. C++ STL-এ List reverse ফাংশন

  2. C/C++-এ স্ট্রিং রিভার্স করা

  3. C++ প্রোগ্রাম: সংখ্যা উল্টানো (Reverse a Number)

  4. পাইথনে ধনাত্মক পূর্ণসংখ্যার বিট উল্টিয়ে ফেলার প্রোগ্রাম