分析:一个数是2的幂,那么在计算机中的二进制表达式必然是只有最高位是1(符号位为0),因此算法有两种:
- 把数转换成二进制字符串,判断是否只有最高位是字符1;
只要结果大于1且低位是0就对数进行右移位运算,不满足则不是2的幂,否则是2的幂;
JAVA代码实现如下:
public class PowerNumberJudgeFor2 {
public static void main(String[] args ){
System. out.println( two(1025));
}
//实现一
private static boolean one(long n){
String s=Long. toBinaryString(n);
if( '1'==s.charAt(0) && s.indexOf( "1", 1)==-1){
return true ;
} else {
return false ;
}
}
//实现二
private static boolean two( long n){
long b= n ;
while( true){
if( b>1 ){
if( b%2==0 ){
b=b>>2;
} else {
return false ;
}
} else {
if(b==1){
return true ;
} else {
return false ;
}
}
}
}
}
本文介绍两种判断一个整数是否为2的幂的方法,并给出相应的JAVA代码实现。第一种方法通过转换为二进制字符串并检查字符来判断;第二种方法通过循环右移位运算来判断。
8008

被折叠的 条评论
为什么被折叠?



