如何判断一个数是2的幂?

分析:一个数是2的幂,那么在计算机中的二进制表达式必然是只有最高位是1(符号位为0),因此算法有两种:

  1. 把数转换成二进制字符串,判断是否只有最高位是字符1;
  2. 只要结果大于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 ;
                     }
                }
           }
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值