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 に答える