温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

求二进制中1的个数的五种方法

发布时间:2020-08-12 16:21:16 来源:网络 阅读:437 作者:小止1995 栏目:编程语言
#include<iostream>
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<<count1(3)<<endl;	
	cout<<count2(15)<<endl;	
	cout<<count3(4)<<endl;	
	cout<<count4(128)<<endl;	
	cout<<count5(0)<<endl;
	return 0;
}


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI