[LeetCode231] Power of Two
题目:
Given an integer, write a function to determine if it is a power of two.
判断是否是2的次方数
分类:Math Bit Manipulation
代码:
1 class Solution { 2 public: 3 bool isPowerOfTwo(int n) { 4 /*自己的方法 5 if(n == 0) 6 return false; 7 vector<int> res; 8 while(n) 9 { 10 res.push_back(n % 2); 11 n /= 2; 12 } 13 //二进制是否只有最高位为1 14 int size = res.size(); 15 for(int i = 0; i < size; ++i) 16 { 17 if(i != size - 1 && res[i] != 0) 18 return false; 19 if(i == size - 1 && res[i] != 1) 20 return false; 21 } 22 return true; 23 */ 24 25 /* 26 //通过移位数1的个数 n&1如果等于1说明二进制含有1 27 int count = 0; 28 while(n > 0) 29 { 30 count += (n & 0x01); 31 n >>= 1; 32 } 33 return count == 1; 34 */ 35 36 //同样是数1的个数,巧妙的利用n&(n-1)实现 37 return n > 0 && ((n &(n - 1)) == 0); 38 } 39 };
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号