2011-03-21 43 views
0

可能重複的位數:
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,隨機填充它,然後遍歷它,或者有不同的方式嗎?

+0

檢出http://en.wikipedia.org/wiki/Hamming_weight – JavaKungFu 2011-03-21 19:37:54

回答

7

使用BitArray可能是有效的,但你也可以做

byte b = ... ; 

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

我認爲這被稱爲lambda表達式,對吧? BtW,對不起,我不能upvote,我還沒有註冊。 – Max 2011-03-21 19:50:02

+0

yes'c => c =='1''是一個lambda表達式謂詞。 – 2011-03-21 19:53:12

1

這是一個面試問題?

對於一個字節,最快的方法是預先計算一個數組,使得a [i] = i中的位數 - 內存開銷可以忽略不計。

+0

是的,面試問題。 – Max 2011-03-21 19:51:36

+0

http://gurmeet.net/puzzles/fast-bit-counting-routines/ – BadPirate 2012-01-22 21:29:11

相關問題