题:给定一个8bit的变量,求其二进制表示中“1”的个数。

算法一:
int Count(int v)
{
    int num=0;
    while(v)
    {
        if(v%2==1)
           num++;
        v=v/2;
    }
    return num;
}

算法二:
int Count(int v)
{
    int num=0
    while(v)
    {
        num+=v&ox01;
        v>>=1;
    }
    return num;
}

算法三:
int Count(int v)
{
    int num=0;
    while(v)
    {
        v&=(v-1);
        num++;
    }
    return num;
}

算法四:
int Count(int v)
{
    int num=0;
    switch(v)
    {
        case 0x0:
             num=0;
             break;
        case ox1:
        case 0x2:
        case 0x4:
        case 0x8:
        case ox10:
        case ox20:
        case ox40:
        case 0x80:
             num=1;
             break;
        ......    
     }
}
注:提供了一种以空间换时间的思路

算法五:
int countTable[256]=
{
   0,1,1,2,1,2,2,3,2,3,3......
     3,4,3,4,4,5,1,2,2,3......
     .........................
}

int Count(int v)
{
   return countTable[v];
}
注:查表法,以空间换时间,效率最高。