注意点就是:注意移位时基数的操作,还有指数小于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;
}
}