[英]How do I implement a bit array?
當前方向:
以unsigned char開頭,在我的系統上使用sizeof是1字節。 范圍是0-255。 如果length是我需要的位數,那么elements是我數組中需要的元素數(字節)。
constant unsigned int elements = length/8 + (length % y > 0 ? 1 : 0);
unsigned char bit_arr[elements];
現在,我添加了基本功能,例如設置,取消設置和測試。 其中j是每字節索引的位數,i是字節索引,h =位索引。 我們有i = h / 8和j = i%8。
偽代碼:
bit_arr[i] |= (1 << j); // Set
bit_arr[i] &= ~(1 << j); // Unset
if( bit_arr[i] & (1 << j) ) // Test
看來您對需要完成的工作非常了解。 雖然代替pow(2, j)
,使用1 << j
。 您還需要更改test
代碼。 您不希望測試對數組進行分配。
pow()
會為您提供不需要的浮點值。 完全沒有 當您使用2的冪時,它可能對您有用,但隨着j
變大,它可能會變得怪異。
您最好改用1 << j
。 消除了浮游怪異的任何可能性,並且它的性能也可能更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.