自学内容网 自学内容网

判断一个字节中有几位置1,哪几位为1

如何判断一个byte数据中有多少bit为1?

以下是Brian W. Kernighan公开的一个方法

unsigned bit_count(unsigned v)
{
    unsigned int c; //置位总数累计
    
    for (c = 0; v; c++)
    {
        v &= v - 1; //去掉最低的置位
    }
    
    return c;
}

// 15的二进制为1111, 调用后为1的bit数为 4
unsigned bitNum = bit_count(15);

判断某一位的值
#include <stdio.h>
#include <stdlib.h>
 
 
#defineSET_BIT(x, bit)(x |= (1 << bit))/* 置位第bit位 */
 
 
 
int main()
{
   unsigned int a=0x66;//二进制 01100110
    int i;
     for(i=0;i<8;i++)
    {
        if(a&(1<<i))//关键点
        {
            printf("0x66二进制的bit%d位的值是1\n",i);
        }
        else
        {
            printf("0x66二进制的bit%d位的值是0\n",i);
        }
    }
 
 
    return 0;


原文地址:https://blog.csdn.net/u011878611/article/details/140564863

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!