8,二进制中1的个数

题目描述:

输入一个整数,输出该数二进制表示中1的个数。

其中负数用补码表示。

解题思路:与运算

一个不为零的整数,至少一个为1. n 减1 的二进制在最右边的1变为0,后面的0变为1

n与n-1 去与 则 从最右的1开始全部变为0,若能进行几次操作最后等于0则就有几个1.

比如 110  减1 后  101  求与 100 ,再次同样的操作 最后为0  次数2=1的次数

 public static int numberOf2(int n) {
               int count = 0;
               while(n!= 0){
                   count++;
                   n = n & (n - 1);
                }
               return count;
    }

 

题目描述:

给定一个double类型的浮点数base和int类型的整数exponent。

求base的exponent次方。

  public double Power(double base, int exponent) {
                double sum=1;
        boolean flag=false;
        if(exponent<0){//判断是否大于0
         exponent=-exponent;
         flag=true;
        }
        while(exponent>=1){
            sum*=base;
            exponent--;
        }
        if(flag){
            return 1/sum;
        }
        return sum;  
  }

 

posted @ 2019-08-11 15:12  Apache24  阅读(253)  评论(0)    收藏  举报