重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includeusing 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<
网站栏目:求二进制中1的个数的五种方法
文章地址:http://cqcxhl.cn/article/gdspjd.html