Case1:
import java.util.Scanner;
/**
* 判断一个数是否为2的幂次,本质还是一个找规律的题
* 一个数如果是2的幂次,那么其二进制表示一定为最高位是1,后面全跟着0
* 然后呢这个数-1 ,一定是最高位为0,后面跟着一串1
* 所以若n是2的幂次则 n & n-1 一定为0
* */
public class T2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
if(n<2){
System.out.println("No");
}
System.out.println((n&(n-1)) == 0);
}
}
Case2:
import java.util.Scanner;
/**
* 判断一个数是否为2的幂次,若一个数是2的幂次,则其每次除2都能除尽,也就是余数一定为0,若余数不为0,则其一定不是2的幂次
* */
public class T2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
if(n<2){
System.out.println("No");
}
int mod = 0;
while (n>1){//除到1停下即可
mod = (n % 2);
if(mod!=0){
System.out.println("No");
break;
}
n/=2;
}
if(n==1){
System.out.println("Yes");
}
}
}