判断一个字节中有几位置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>
 
 
#define	SET_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;

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 10:52:02       106 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 10:52:02       116 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 10:52:02       95 阅读
  4. Python语言-面向对象

    2024-07-20 10:52:02       103 阅读

热门阅读

  1. MySQL分库与分表的设计思路

    2024-07-20 10:52:02       23 阅读
  2. AI、AGI、AIGC与AIGC、NLP、LLM,ChatGPT区分

    2024-07-20 10:52:02       27 阅读
  3. 高并发小结

    2024-07-20 10:52:02       24 阅读
  4. linux学习笔记整理: 关于linux:nginx服务器 2024/7/20;

    2024-07-20 10:52:02       27 阅读
  5. 初等数论精解【1】

    2024-07-20 10:52:02       25 阅读
  6. Base64编码与解码

    2024-07-20 10:52:02       30 阅读
  7. Android Studio关于Gradle及JDK问题解决

    2024-07-20 10:52:02       26 阅读
  8. Oracle(12)什么是主键(Primary Key)?

    2024-07-20 10:52:02       25 阅读