#include<iostream>usingnamespacestd;//求二进制中1的个数:对于一个字节(8bit)的变量,要求算法的执行效率尽可能的高//1,对于二进制,对2求余可得到这一位是0还是1intcount1(intv){intnum=0;while(v){if(v%2==1)++num;v=v/2;}returnnum;}//2.除2可用右移操作,提高效率,判断一位是否为1可用与来判别intcount2(intv){intnum=0;while(v){num+=(v&1);v>>=1;}returnnum;}//这个数是2的整数次幂来判断intcount3(intv){intnum=0;while(v){v&=(v-1);++num;}returnnum;}//4.分支语句进行判断:效率低intcount4(intv){intnum=0;switch(v){case0:num=0;break;case1:case2:case4:case8:case16:case32:case64:case128:num=1;break;case3:case6:case12://还有别的可能num=2;break;}returnnum;}//5.查表法intcountTable[256]={0,1,1,2,1,2,};intcount5(intv){returncountTable[v];}intmain(){cout<<count1(3)<<endl;cout<<count2(15)<<endl;cout<<count3(4)<<endl;cout<<count4(128)<<endl;cout<<count5(0)<<endl;return0;}