快速幂模板

指数循环右移,不断对底数开方,并且判断指数二进制第一位是否为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;
}

 

posted @ 2018-03-27 08:48  TQCAI  阅读(78)  评论(0编辑  收藏  举报