您的位置:首页 > 其它

统计一个字符串中bit为1的个数

2016-09-22 20:19 176 查看
今天遇到的一个问题,感觉自己的代码效率不高

编写一个函数,实现统计一个字符串中bit为1的个数

#include <stdio.h>

//方法1
int str_bit_count(char * p)
{
int count = 0,sum = 0;
int n = 0;

while((*p) != '\0')
{
n = *p;
for(count=0;n;n>>=1)
{
count += n&1;
}
sum += count;
p++;
}

return sum;
}

//方法2
int str_bit_count2(char * p)
{
int count = 0,sum = 0;
int n;

while((*p) != '\0')
{
n = *p++;
count = 0;
while(n)
{
n &= (n-1);
count++;
}
sum += count;
}

return sum;
}

int main(void)
{
char a[] = "1111";
int sum = 0;
int sum1 = 0;
sum = str_bit_count(a);
sum1 = str_bit_count2(a);

printf("%d %d\n",sum,sum1);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐