第一种方法,对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;
- }