簡體   English   中英

如何實現位數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM