给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
bool isPowerOfTwo(int n){
return ( (n > 0) && ((n & (n -1)) == 0) );
}
思路:2的幂次方的特征就是二进制形式时只有一位是1,其他位都是0。这种形式的只要在此基础上减1,开始位都会变成1,这样的两个数与运算时就会等于0。
还有2的幂次方大于0
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
bool isPowerOfTwo(int n){
return ( (n > 0) && ((n & (n -1)) == 0) );
}
思路:2的幂次方的特征就是二进制形式时只有一位是1,其他位都是0。这种形式的只要在此基础上减1,开始位都会变成1,这样的两个数与运算时就会等于0。
还有2的幂次方大于0