How to check the number is power of two?
Approach
#1:
Divide number by 2 reclusively to check it.
Time complexity : O(log2n).
Approach
#2:
Bitwise AND the number with its just previous number should
be equal to ZERO.
Example: Number = 8
Binary of 8: 1 0 0 0
Binary of 7: 0 1 1 1 and the bitwise AND of both the
numbers is 0 0 0 0 = 0.
Time complexity : O(1).
Approach
#3:
Bitwise XOR the number with its just previous number
should be sum of both numbers.
Example: Number = 8
Binary of 8: 1 0 0 0
Binary of 7: 0 1 1 1 and the bitwise AND of both the
numbers is 1 1 1 1 = 15.
Time complexity : O(1).
import java.util.Scanner;
public class PowOfTwo {
public static void main(String[] args) {
Scanner
scan = new Scanner(System.in);
int num = scan .nextInt();
checkUsingANDOperation(num);
checkUsingXOROperation(num);
scan.close();
}
/**
* Check Using AND Operation
*/
private static void checkUsingANDOperation(int num) {
if((num
& (num-1))==0) {
System.out.println(num+"
is the power of 2");
}
else {
System.out.println(num+"
is not the power of 2");
}
}
/**
* Check Using XOR Operation
*/
private static void checkUsingXOROperation(int num) {
if((num
^ (num-1))==2*num-1)
{
System.out.println(num+"
is the power of 2");
}
else {
System.out.println(num+"
is not the power of 2");
}
}
}
Output:
8
8 is the power of 2
8 is the power of 2
No comments:
Post a Comment