題:給定一個8bit的變量,求其二進制表示中“1”的個數。
算法一:
int Count(int v)
{
int num=0;
while(v)
{
if(v%2==1)
num++;
v=v/2;
}
return num;
}
{
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 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 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 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];
}
{
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];
}