popcount(セットビットの数)を実行するための適切な方法を探しました。私はこれをここで見つけました
http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan
unsigned int v; // count the number of bits set in v
unsigned int c; // c accumulates the total bits set in v
for(c = 0; v; c++)
{
v &= v - 1; // clear the least significant bit set
}
いくつかの例を試してみると、それが機能するのは事実です。二項演算/表現のどのプロパティがそれを機能させますか?
ポップカウントとバイナリ表現に関するいくつかのさらなる読み方をほのめかしていただけますか?