云腾软件

祥云工作室 QQ:252895542

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1. 判断一个整数是否是2的N次方?

bool foo(int n)
{
	if(n == 0) return true;
	if(n < 0) return false;
	return !(n&n-1);
}

2.统计一个整数的二进制中1的个数

int foo(int n)
{
	int nCount = 0;
	while(n)
	{
		nCount++;
		n = n&(n-1);
	}
	return nCount;
}

x&x-1表示把数字x对应的二进制的最右边的1变为0。


posted on 2012-07-04 13:49  云腾  阅读(284)  评论(0)    收藏  举报