113.Power of Four

Given an integer (signed 32 bits), write a function to check whether it is a power of 4.

Example:
Given num = 16, return true. Given num = 5, return false.

Follow up: Could you solve it without loops/recursion?

Credits:
Special thanks to @yukuairoy for adding this problem and creating all test cases.

Subscribe to see which companies asked this question

分析:是4的整数幂的整数的二进制长度应该是奇数,并且二进制中只有最高位为1其他均为0.

/**
     * @date 20160420
     * 一个数为4的整幂数,则其对应的二进制一定是奇数位,并且只有最高位是1.
     */
    public boolean isPowerOfFour(int num) {
        
       if(num == 0){
          return false; 
       }    
    	
       if( Integer.toBinaryString(num).length() % 2 != 1){
           return false;
       }else{
            return (num &(num-1)) == 0;
        }
    }
    

你可能感兴趣的:(113.Power of Four)