快速求冪

舉個例子:2^7=2^(4+2+1)=(2^4)*(2^2)*(2^1);
而7的二進制表示方法爲111。
也就是只有在二進制數位上爲1時乘一個2^n,而在二進制數位上爲0時,則不乘。

int pow3(int x, int n)
{
    int result = 1;
    while (n > 0)
    {
        if (n & 1)        // n的最後位數爲1時,結果乘以x
            result *= x;
        n >>= 1;          // 指數右移一位
        x *= x;           //指數右移後,相當於乘了1個x。
    }
    return result;
}





 

發佈了17 篇原創文章 · 獲贊 7 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章