题目:数值的整数次方
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0。
解题思路
1.全面考察指数的正负、底数是否为零等情况。
2.写出指数的二进制表达,例如13表达为二进制1101。
3.举例:101101 = 100001*100100*101000。
4.通过&1和>>1来逐位读取1101,为1时将该位代表的乘数累乘到最终结果。
参考代码
public class Solution {
public double Power(double base, int exponent) {
if(base>=-0.000001&&base<= 0.000001){
return 0;
}
int e = exponent >0 ? exponent :-exponent;
double result=1.0;
double current =base;
while (e!=0){
if((e & 1)== 1){
result *=current;
}
current *=current;
e>>=1;
}
return exponent >0?result:1/result;
}
}