Jul 15, 2008

Code to check if a number can be expressed in the form 2^n

The bit representation of any number of the form 2^n will have only one field set.
If we do an AND operation with the (number-1) the result is 0
i.e (n & n-1) is 0

The number is of form 2^n if (n & n-1) is 0


#include <stdio.h>

int main()
{
    int num;

    printf("Enter number\n");
    scanf("%d", &num);

    if(num && !(num & num-1))
    {
        printf("The number is of form 2^n");
    }
    else
    {
        printf("The number is not of the form 2^n");
    }

  return 0;
}

No comments :

Post a Comment