LeetCode:Power Of Two
解法一:判断一个数是否为2的n次方 若一个数为2的n次方的话 它的二进制则为最高位为1 其余为0
1 class Solution { 2 public: 3 bool isPowerOfTwo(int n) { 4 5 if(n<=0) return false; 6 7 int count=0; 8 9 while(n) 10 { 11 count+=(n&1); 12 n=n>>1; 13 } 14 return count==1; 15 16 } 17 };
解法二:
如果一个数是2的次方数的话,那么它的二进数必然是最高位为1,其它都为0,那么如果此时我们减1的话,则最高位会降一位,其余为0的位现在都为变为1,那么我们把两数相与,就会得到0,用这个性质也能来解题。