一、一个数是2的整数次幂,那么这个数除2一定也是2的整数次幂
//方法一 //一个数是2的幂,那么n/2一定也是2的幂 bool checkPowerOf2_1(int n) { if(n<=0) return false; while(n) { if(n==1 || n==2) return true; if(n%2==0) n = (n>>1); else return false; } }
二、一个数是2的整数次幂,那么这个数的二进制一定是最高位为1,其余位全部是0
//方法二 //一个数是2的整数次幂,那么这个数的二进制的最高位一定是1,其他位一定是0 bool checkPowerOf2_2(int n) { if(n<=0) return false; int temp = 0; while(n) { temp += (n&0x01); n = (n>>1); } if(temp<2) return true; else return false; }