//第一种
unsigned int CountOneInChar_1(const char log)
{
unsigned int num = 0, val;
int i;
for(i = 0; i < 8; i++)
{
val = log >> i; //移位
val &= 0x01; //与1 相与
if(val==1)
num++;
}
return num;
}
//第二种
unsigned int CountOneInChar_2(const char ch)
{
unsigned int num = 0, val;
for(i = 0;i < 8;i++)
{
val = ch>>i;
val &= 0x01;//与1 相与
num +=val;
}
return num;
}
//第三种
unsigned int CountOneInChar_3(const char ch)
{
unsigned int num = 0,val = ch;
while(val != 0)
{
num++;
val = val&(val-1);
}
return num;
}
本文介绍了三种不同的方法来计算一个字符中二进制表示的1的数量。第一种和第二种方法通过逐位右移并检查最低位是否为1来实现;第三种方法采用一种巧妙的方式,通过将数值与其减一后的结果进行与运算并迭代这个过程直到数值变为0,以此来计数。
5万+

被折叠的 条评论
为什么被折叠?



