您的位置:首页 > 其它

Find whether a given number is a power of 4 or not

2013-06-09 14:12 507 查看

reference:

http://www.geeksforgeeks.org/find-whether-a-given-number-is-a-power-of-4-or-not/

Problem Definition:


Find whether a given number is a power of 4 or not.

Solution:

A number n is a power of 4 if following conditions are met.

a) There is only one bit set in the binary representation of n (or n is a power of 2)

b) The count of zero bits before the (only) set bit is even.

For example: 16 (10000) is power of 4 because there is only one bit set and count of 0s before the set bit is 4 which is even.

Code:

bool isPowerOfFour(unsigned int n)
{
int count = 0;

/*Check if there is only one bit set in n*/
if ( n && !(n&(n-1)) )
{
/* count 0 bits before set bit */
while(n > 1)
{
n  >>= 1;
count += 1;
}

/*If count is even then return true else false*/
return (count%2 == 0)? 1 :0;
}

/* If there are more than 1 bit set
then n is not a power of 4*/
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐