如何计算变量中有多少个零位?我必须使用像thist BITCOUNT(x,c)这样的宏,其中x是我的变量,c是x中零位的计数
示例:X= 00101001,C=5
发布于 2013-05-19 03:19:49
一个简单的解决方案:
#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; \
}发布于 2015-12-01 19:08:58
仅供参考,gcc有一个内置的可以做到这一点:
__builtin_popcount()( https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html )
我认为,根据您的架构,它可以很好地提升性能。
https://stackoverflow.com/questions/16628036
复制相似问题