第一种方法,对N进行循环除以2.
第二种方法,算2的N次方数据,比较N,小于继续乘以2.等于的话就是2的N次方。大于的话就不是2的N次方。
第三种方法,2的N次方。用二进制表示都是10,100,1000……
然后的话就有了第三种方法。
public boolean nCF(int n){
boolean b = false;
while(true){
int j=n%2;
n=n/2;
if(j==1){
b=false;
break;
}if(n==2){
b=true;
break;
}
}
return b;
}
第二种方法,算2的N次方数据,比较N,小于继续乘以2.等于的话就是2的N次方。大于的话就不是2的N次方。
public boolean nCF2(int n){
boolean b = false;
int x = 2;
while(true){
if(x==n){
b=true;
break;
}if(x<n){
x=2*x;
}else{
b=false;
break;
}
}
return b;
}
第三种方法,2的N次方。用二进制表示都是10,100,1000……
然后的话就有了第三种方法。
public boolean nCF3(int n){
boolean boo = true;
String s = Integer.toBinaryString(n);
byte[] b = s.getBytes();
for(int i=1;i<b.length;i++){
if(b[i]!=48){
boo = false;
break;
}
}
return boo;
}