題目描述
/**
* 1.全面考察指數的正負、底數是否爲零等情況。
* 2.寫出指數的二進制表達,例如13表達爲二進制1101。
* 3.舉例:10^1101 = 10^0001*10^0100*10^1000。
* 4.通過&1和>>1來逐位讀取1101,爲1時將該位代表的乘數累乘到最終結果。
*/
二分快速冪
class Solution {
public:
double Power(double base,int exponent){
int n=(exponent>0)?exponent:-exponent;
double r=1.0;
while(n){
if(n&1==1)//n的二進制的最後一位是1
r=r*base;
base*=base;
n=n>>1;//n/2
}
return (exponent>0)?r:1/r;
}
};