我正在尋找一種優化的計數器實現,可能類似於灰色代碼,這將使我能夠快速瀏覽比特數組中的數字。在並行比特碼中實現快速計數器
假設我有數組:
_m256 header[640];
我需要保持改變比特的計數器608 - 639的每一個256位的代表一個單獨的,並行計數器。
「增量」操作最多需要31次操作:AND計算進位,XOR計算值,對每個位置重複。格雷碼應該只需要xor,但我不知道計算索引的有效方式 - 它似乎需要多達31個操作來確定一個位的位置。
理想情況下,我想要一個計數器,它需要少量的ALU操作來確定要更改的位。有誰知道會有幫助的事情?
這對我來說不是很清楚你想要做什麼。你說「每個256位代表一個單獨的並行計數器。」 1位計數器只在0,1,0,1,...之間振盪,而進位只是反相值。要計算進位,在「增加」之前,您只需計入每個計數器的當前值。要計算新的價值,你只是'不'櫃檯。這可以通過將多個計數器同時轉換爲大數據類型(例如int)並獲取按位補碼(〜值)來完成。 – Ponkadoodle 2011-05-27 19:43:07
有256個並行計數器,每個32位。 Counter0使用標題[608] ...標題[639]的位0,計數器255使用標題[608] ... [639]的位255。 – Xavier 2011-05-27 20:14:47