কম্পিউটার

C-তে দুটি পাওয়ার


ধরুন আমাদের একটি সংখ্যা n আছে। সংখ্যাটি 2 এর শক্তি কিনা তা পরীক্ষা করতে হবে। তাই n =16, তাহলে আউটপুট সত্য হবে, যদি n =12 হয়, তাহলে এটি মিথ্যা হবে।

এটি সমাধান করতে আমরা লজিক্যাল অপারেশন ব্যবহার করব। যদি আমরা দেখি যে সংখ্যা দুটির শক্তি, তাহলে সেই সংখ্যার বাইনারি উপস্থাপনায় MSb হবে 1, এবং অন্য সব বিট হল 0। তাই যদি আমরা [n AND (n – 1)] করি, তাহলে এটি ফিরে আসবে। 0 যদি n হয় 2 এর শক্তি। যদি আমরা বাইনারিতে n =16 =10000 দেখি, (n – 1) =15 =01111 বাইনারিতে, তাহলে 10000 AND 01111 =00000 =0

উদাহরণ (C)

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

#include <stdio.h>
#include <math.h>
#define MAX 20
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");
   printf("\n");
}

ইনপুট

16
12
1
32

আউটপুট

true
false
true
true

  1. উইন্ডোজে পাওয়ার সাশ্রয় করা

  2. সি প্রোগ্রামে 3D তে দুটি প্লেনের মধ্যে কোণ?

  3. পাইথন প্রোগ্রাম a no দুইটির শক্তি কিনা তা খুঁজে বের করতে

  4. ActiveRecord বনাম EctoPart দুই