首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C语言中的BITCOUNT宏

C语言中的BITCOUNT宏
EN

Stack Overflow用户
提问于 2013-05-19 03:13:57
回答 2查看 1K关注 0票数 1

如何计算变量中有多少个零位?我必须使用像thist BITCOUNT(x,c)这样的宏,其中x是我的变量,c是x中零位的计数

示例:X= 00101001,C=5

EN

回答 2

Stack Overflow用户

发布于 2013-05-19 03:19:49

一个简单的解决方案:

#include <limits.h>

代码语言:javascript
复制
#define BITCOUNT(x,c) \
    { \
        int i; \
        (c) = 0; \
        for ( i = 0; i < CHAR_BIT * sizeof(x); i++ ) \
            (c) += ( (x) & ( 1 << i ) ) == 0; \
    }
票数 1
EN

Stack Overflow用户

发布于 2015-12-01 19:08:58

仅供参考,gcc有一个内置的可以做到这一点:

代码语言:javascript
复制
__builtin_popcount()

( https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html )

我认为,根据您的架构,它可以很好地提升性能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16628036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档