快速幂模板

指数循环右移,不断对底数开方,并且判断指数二进制第一位是否为1,如果是,让返回值乘以开方底数

int pow_(int a,int b){
  int r=1,base=a;
  while(b){
    if(b&1) r*=base;    //当前二进制位为 1 ,乘以底数 
    base*=base;            //底数开方 
    b>>=1;                //右移进入下一位 
  }
  return r;
}
原文地址:https://www.cnblogs.com/TQCAI/p/8655378.html