1

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

例如:X = 00101001 和 C = 5

4

2 回答 2

1

一个简单的解决方案:

#include <limits.h>

#define BITCOUNT(x,c) \
    { \
        int i; \
        (c) = 0; \
        for ( i = 0; i < CHAR_BIT * sizeof(x); i++ ) \
            (c) += ( (x) & ( 1 << i ) ) == 0; \
    }
于 2013-05-18T19:19:49.097 回答
0

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

__builtin_popcount()

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

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

于 2015-12-01T11:08:58.120 回答