任何十進制數都可以用二進制來表示,且每一位最多爲1,最少爲0。
舉個例子,15=2°×1+2¹×1+2²×1+2³×1。利用二進制轉換方法可將15轉換爲1111(拆分成二的冪)。
那麼a^15就等於[a^(2°×1)]×[a^(2¹×1)]×[a^(2²×1)]×[a^(2³×1)],即:a的二次方冪與15在二進制位上的各位的乘積再相乘。
代碼實現:
long double power(long double a,int n)
{
long double b=a;//複製底數
long double result=1;
while (n)//條件:當n不爲0(二進制轉換未完成)
{
if (n%2)//當n%2不等於0時符合條件,說明n在這一二進制位上爲1
result*=b;
b*=b;//下一個二進制位的冪
n/=2;//進入下一個二進制位的轉換
}
}//直到a的所有二進制位冪相乘完成,n無法再進行2的取模時,n的二進制位轉換完成,循環結束
return result;
}