码迷,mamicode.com
首页 > 其他好文 > 详细

一个字节中存在着多少个二进位1

时间:2015-05-10 22:26:27      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:一个字节中存在着多少个二进位1

一个字节中二进位1的个数

两个相似的方法,一个右移所查看的字节;一个查看左移1.


#include <stdio.h>

int getOneBits(unsigned char num)
{
    int count = 0;
    for(int i = 0; i < 8; i++)
    {
        if((num & (1 << i)) != 0)
            count++;
    }
    
    return count;
}

int main(void)
{
    printf("%d\n", getOneBits((unsigned char)10));
    return 0;
}


#include <stdio.h>

int getOneBits(unsigned char num)
{
    int count = 0;
    for(int i = 0; i < 8; i++)
    {
        if(((num>>i) & 1) != 0)
            count++;
    }
    
    return count;
}

int main(void)
{
    printf("%d\n", getOneBits((unsigned char)10));
    return 0;
}

在网上看到有查表法,效率高,貌似比较麻烦:

//将0x00~0xFF对应存在二进位0的个数保存在unsigned int C[256]中
const int C[256]={8,7,7,6,7,6,6,5,7,……,1,0};
//然后
int ZeroBitsCount(BYTE b) {return C[(unsigned int)b];}


一个字节中存在着多少个二进位1

标签:一个字节中存在着多少个二进位1

原文地址:http://blog.csdn.net/foolsong/article/details/45625725

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!