求二进制中1的个数的五种方法-创新互联

#include
using namespace std;
//求二进制中1的个数:对于一个字节(8bit)的变量,要求算法的执行效率尽可能的高
//1,对于二进制,对2求余可得到这一位是0还是1
int count1(int v)
{
	int num=0;
	while(v)
	{
		if(v%2==1)
			++num;
		v=v/2;
	}	
	return num;
}
//2.除2可用右移操作,提高效率,判断一位是否为1可用与来判别 
int count2(int v)
{
	int num=0;
	while(v)
	{
		num+=(v&1);
		v>>=1;
	}
	return num;
 } 
 //这个数是2的整数次幂来判断
 int count3(int v)
 {
 	int num=0;
 	while(v)
 	{
 		v&=(v-1);
 		++num;
	}
	 return num;
} 
 //4.分支语句进行判断:效率低
 int count4(int v)
 {
 	int num=0;
 	switch(v)
 	{
 		case 0:
 			num=0;
 			break;
 		case 1:
 		case 2:
 		case 4:
 		case 8:
 		case 16:
 		case 32:
 		case 64:
 		case 128:
 			num=1;
 			break;
 		case 3:
 		case 6:
 		case 12:
 		//还有别的可能
			num=2;
			break;
	}
	return num;
} 
//5.查表法
int countTable[256]={
	0,1,1,2,1,2,
};
int count5(int v)
{
	return countTable[v];
}
int main()
{
	cout<

我们提供的服务有:成都网站设计、网站制作、微信公众号开发、网站优化、网站认证、新华ssl等。为上千多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的新华网站制作公司

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章标题:求二进制中1的个数的五种方法-创新互联
分享链接:http://pwwzsj.com/article/dicihe.html