これは以前に尋ねられたことは知っていますが、ここにリストされているこの特定のソリューションを見ています:
int BitCount(unsigned int u)
{
unsigned int uCount;
uCount = u - ((u >> 1) & 033333333333) - ((u >> 2) & 011111111111);
return ((uCount + (uCount >> 3)) & 030707070707) % 63;
}
それはどのように機能しますか?
ここに関連する注意事項はありますか?
理論的には、一定時間で答えを見つけることは可能ですか? つまり、カウントするために実際にビットを反復処理する必要はありませんか?