首页 > 其他 > 详细

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

时间:2015-05-10 22:25:19      阅读:319      评论:0      收藏:0      [点我收藏+]

一个字节中二进位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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!