计算一个字节中“打开”的位数

时间:2011-03-21 19:33:16

标签: c# algorithm

  

可能重复:
  Count the number of set bits in an integer
  Best algorithm to count the number of set bits in a 32-bit integer?

这是一个考试问题,这就是我所有的 - “计算”在一个字节中“的数量”“开”意味着1,我假设。我需要创建一个BitArray,随机填充它然后迭代它还是有不同的方式?

2 个答案:

答案 0 :(得分:6)

使用BitArray可能效率很高,但您也可以

byte b = ... ;

int count = Convert.ToString(b,2).ToCharArray().Count(c => c=='1');

答案 1 :(得分:1)

这是面试问题吗?

对于一个字节,最快的方法是预先计算一个数组,使得a [i] = i中的位数 - 内存开销可以忽略不计。