Power of Two
Posted: 22 Nov, 2020
Difficulty: Easy
You have been given an integer 'N'. Your task is to return true if it is a power of two. Otherwise, return false.
An integer 'N' is a power of two, if it can be expressed as 2 ^ 'K' where 'K' is an integer.
Input Format:
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'.
Output Format:
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.
Note:
You do not need to print anything; it has already been taken care of. Just implement the given function.
Constraints:
1 <= T <= 100
-2^31 <= N <= 2^31 - 1
Time Limit: 1sec
Approach 1
Approach 2
Approach 3
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)).
SIMILAR PROBLEMS
Ninja And The LCM
Posted: 12 Apr, 2022
Difficulty: Easy
Detect Odd
Posted: 15 Apr, 2022
Difficulty: Moderate
Ninja And The Clan
Posted: 17 Apr, 2022
Difficulty: Moderate
Pair Product Div by K
Posted: 15 May, 2022
Difficulty: Moderate
Check whether K-th bit is set or not
Posted: 20 May, 2022
Difficulty: Easy