通過二進制理解快速冪

   任何十進制數都可以用二進制來表示,且每一位最多爲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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章