res = 1;
for (i = 1; i <= n; i <<= 1) // n = exponent
{
if (n & i)
res *= a; // a = base
a *= a;
}
これは、より効率的なコードでなければなりません。なぜこれが機能するのかわかりません。このタイプのパワー機能はなぜ機能するのですか?
for()の最初の行は問題ありませんなぜ私が知っているのですか< < = i。しかし、私はどこに行があるのか分からない:if(n & i)。私はその仕組みが分かっていますが、私は理由を知らないのです。
? –
ループの 'printf'を追加して変数の値を確認しようとしましたか? http://ideone.com/NJtt4i – mch
ありがとうございました –