举个例子: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;
}