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

C প্রোগ্রামিং-এ পাওয়ার অফ টু (Power of Two) চেক করা

ধরি আমাদের একটি সংখ্যা n আছে। আমরা চেক করবো যে সংখ্যাটি ২ এর ঘাত (power of 2) কিনা। উদাহরণস্বরূপ, n = 16 হলে আউটপুট হবে true, আর n = 12 হলে false।

লজিক (Logic)

এই সমস্যা সমাধান করতে আমরা বিটওয়াইজ অপারেশন ব্যবহার করব। যেসব সংখ্যা ২ এর ঘাত, তাদের বাইনারি রিপ্রেজেন্টেশনে সবচেয়ে বামের বিট (MSB) হবে ১ এবং বাকি সব বিট ০। তাই যদি আমরা [n AND (n – 1)] অপারেশন করি, তবে ফলাফল ০ আসবে যদি n ২ এর ঘাত হয়।

উদাহরণস্বরূপ, n = 16 এর বাইনারি হল 10000, (n – 1) = 15 এর বাইনারি হল 01111। তাহলে 10000 AND 01111 = 00000 = 0।

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

#include <stdio.h>
#include <stdbool.h>

bool isPowerOfTwo(int n) {
    return (n > 0 && !(n & (n - 1)));
}

int main() {
    printf("%s\n", isPowerOfTwo(16) ? "true" : "false");
    printf("%s\n", isPowerOfTwo(12) ? "true" : "false");
    printf("%s\n", isPowerOfTwo(1) ? "true" : "false");
    printf("%s\n", isPowerOfTwo(32) ? "true" : "false");
    return 0;
}

ইনপুট

16 12 1 32

আউটপুট

true false true true

ব্যাখ্যা: এই পদ্ধতিটি খুব দ্রুত এবং কার্যকর, কারণ এটি শুধু একটি বিটওয়াইজ অপারেশন ব্যবহার করে। n > 0 চেক করা হয় নেগেটিভ সংখ্যা এবং শূন্য বাদ দিতে।

  1. উইন্ডোজে পাওয়ার সেভিং: বিদ্যুত খরচ কমানোর উপায়

  2. C++ প্রোগ্রামে ৩D-এ দুটি প্লেনের মধ্যে কোণ বের করা

  3. পাইথনে কোনো সংখ্যা ২-এর ঘাত কিনা চেক করা

  4. ActiveRecord vs. Ecto – পার্ট ২: ডাটাবেস কোয়েরি 습득 করা