#include
using namespace std;
//求二進(jìn)制中1的個數(shù):對于一個字節(jié)(8bit)的變量,要求算法的執(zhí)行效率盡可能的高
//1,對于二進(jìn)制,對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;
}
//這個數(shù)是2的整數(shù)次冪來判斷
int count3(int v)
{
int num=0;
while(v)
{
v&=(v-1);
++num;
}
return num;
}
//4.分支語句進(jìn)行判斷:效率低
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<
名稱欄目:求二進(jìn)制中1的個數(shù)的五種方法
文章地址:http://weahome.cn/article/gdspjd.html