标签:turn while 进制 int span nbsp 运算 return ==
快速幂代码如下:
int me(int a,int b)//传入a的b次方
{
int ans=1;
while(b!=0)
{
if(b&1==1)
{
ans*=a;
}
a*=a;
b=b>>1;
}
return ans;
}
以3的11次方为例。
则a=3,b=11
将11用二进制表示,11(2)=1011,可以将11拆解为20+21+23
3的11次方可以表示为3^(20+21+23)
3的三次方拆解为3^(20)·3^(21)·3^(23)
用位运算&1得出3末尾的二进制数,>>=1右移一位,逐个取得3的每一位二进制数进行计算。
a*a的意义:31→32→34→38→316→332→...
标签:turn while 进制 int span nbsp 运算 return ==
原文地址:https://www.cnblogs.com/Decimus/p/11032637.html