c# – 如何检查位标志/位掩码包含多少个数字

参见英文答案 >
How to count the number of set bits in a 32-bit integer?                                    50个

我正在使用一个标志存储我所有装备的枪,并且只是想知道是否有可能检查位标志中包含多少个数字.

例如:

13将包含1,4和8

注意:
我是新手,因此我的问题可能没有多大意义,或者我可能使用了错误的术语,如果是这样,请告诉我,我将很乐意改变它.

最佳答案 既然你问:

How many numbers are contained in a bit flag?

这应该工作:

int CountBits(int n)
{
    int count = 0;
    do
    {
        int has = n & 1;
        if (has == 1) 
        {
            count ++ ;
        }

    } while((n >>= 1) != 0);

    return count;
}
点赞