簡體   English   中英

使用一長串位

[英]Working with long lists of bits

我對單個位的操作不熟悉。 這個問題最重要的是健全性檢查:

我想要一百萬個單個位的列表。 為此,我應該創建一個1000000/16 unsigned ints的列表。 然后,通過遍歷這些unsigned ints我可以使用按位運算符將各個位設置為所需的值。

這是正確的,還是我真的很傻? 如果我處在正確的軌道上,是否可以始終保證unsigned int為16位?

不,不能保證unsigned int為16位寬。 請改用uint16_t

當您說“列表”時,您是指數組還是鏈接列表? 幾乎可以肯定,使用數組比使用鏈表更有意義。 這將導致更好的內存利用率,並使對單個字/位的隨機訪問成為可能。

如果您需要“長列表”動態增長,那么考慮兩級結構可能是有意義的,例如,不斷增長的指向uint16_t固定大小數組的指針數組(或鏈接列表)。

最后,鑒於大多數現代機器是32位或64位的,為此使用32位或64位字可能會更有效。

假設unsigned int有16位。 實際上,這是無法保證的,而且在當今的大多數系統中,它至少是32。您可以執行sizeof( int ) * CHAR_BITS來獲取int的位數。

您始終可以檢查unsigned int的大小,也可以使用cstdint中定義的uint16_t。 由於消除了查找,因此使用數組而不是列表也將更快。 理想情況下,您應該在恆定時間內獲得正確的整數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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