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