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

C++-এ পূর্ববর্তী সংখ্যা ১'র কমপ্লিমেন্ট কিনা (Previous Number Same as 1's Complement)

এই সমস্যাতে, একটি পূর্ণসংখ্যা n দেওয়া থাকে। এর পূর্ববর্তী সংখ্যা (n-1) কি n-এর ১'র কমপ্লিমেন্ট (1's complement) এর সমান কিনা তা চেক করতে হবে।

উদাহরণ

n = 12 (1100₂) → পূর্ববর্তী 11 (1011₂) → 1's complement of 12 = 0011₂ → নয়

n = 4 (100₂) → পূর্ববর্তী 3 (011₂) → 1's complement of 4 = 011₂ → হ্যাঁ

গাণিতিক পর্যবেক্ষণ

শুধু ২-এর ঘাতসংখ্যা (powers of 2) এর জন্য এটি সত্য হয়। কারণ ২^k এর বাইনারি: 1000...0 (kটি ০)। এর ১'র কমপ্লিমেন্ট: 0111...1 (kটি ১) = 2^k - 1 = পূর্ববর্তী সংখ্যা।

বিটওয়াইজ চেক

n & (n-1) == 0 হলে n হলো ২-এর ঘাত।

C++ প্রোগ্রাম উদাহরণ

#include <iostream>
using namespace std;

bool sameBits(unsigned long int n) {
    if ((n & (n - 1)) == 0) return true;
    return false;
}

int main() {
    unsigned long int n = 64;
    if (sameBits(n))
        cout << "Both are the same";
    else
        cout << "Both aren't the same";
    return 0;
}

আউটপুট

Both are the same
  1. Frugal সংখ্যা চেক করা (C++)

  2. C++ দিয়ে পেন্টাটপ (Pentatope) সংখ্যা বের করা

  3. C++-এ একটি ইন্টিজারর ওন'স কমপ্লিমেন্ট খুঁজে বের করা

  4. C++-এ অ্যাডাম সংখ্যা (Adam Number) চেক করার পদ্ধতি