The first line of input contains an integer ‘T’ representing the number of test cases. Then the test cases follow.
The only line of each test case contains an integer 'N'.
For each test case, the only line of output prints whether the integer ‘N’ is a power of 2 or not.
The output for each test case is in a separate line.
You do not need to print anything; it has already been taken care of. Just implement the given function.
1 <= T <= 100
-2^31 <= N <= 2^31 - 1
Time Limit: 1sec
The basic idea is to use Bit Manipulation. If we subtract a power of 2 numbers by 1 then all unset bits after the only set bit become set; and the set bit becomes unset.
For example for 4 (100) and 16 (10000), we get the following after subtracting 1
3 -> 011
15 -> 01111
So, if a number ‘N’ is power of 2 then bitwise & of ‘N’ and ‘N’-1 will be zero. We can say ‘N’ is a power of 2 or not based on the value of ‘N’&('N'-1). The expression ‘N’&('N'-1) will not work when ‘N’ is 0. To handle this case also, our expression will become ‘N’&(!'N'&('N'-1)).
Check whether K-th bit is set or not
Check whether K-th bit is set or not
Maximum Element
XOR DARE
Merge Two Sorted Arrays Without Extra Space
Co-Prime