注意点就是:注意移位时基数的操作,还有指数小于0转化为大于0处理

    public double Power(double base, int exponent) {
        double res = 1.0;
        double p = base;
        if(exponent < 0){
            res = 1 / res ;
            p = 1 / p;
            exponent = - exponent;
        }
        
        while (exponent > 0){
            if((exponent & 1) != 0){
                res = res * p ;
            }
            //右移一位同时增大基数
            exponent >>= 1;
            p = p * p;
        }
        return res;
  }
}