一个字节中被放 1 的位的个数

一个字节中被置 1 的位的个数


第一种unsigned int TestAsOne0(char log)
{
int i;
unsigned int num=0, val;
for(i=0; i<8; i++)
{
val = log >> i; //移位
val &= 0x01; //与1相与
if(val)
num++;
}
return num;
}


第二种unsigned int TestAsOne1(char log)
{
int i;
unsigned int num=0, val;
for(i=0; i<8; i++)
{
val = (~log) >> i; //反码?
val &= 0x00; //与0相与
if(!val)
num++;
}
return num;