簡體   English   中英

如何通過位掩碼存儲和檢索3位數字?

[英]How to store and retrieve 3-Bit number via bitmask?

可以說我有一個位掩碼

enum ExampleMask
{       
   Attribute1 = 1 << 1,
   Attribute2 = 1 << 2,
   ...
   Attribute27 = 1 << 27
}

因此,我已經使用了32個可用位中的27個。

現在,除了使用位掩碼的標志外,我現在還希望能夠存儲和檢索3位無符號整數。

例如:

// Storing values
int mask =  Attribute2 | Attribute6 | Attribute18; // Saving some attributes
int mask |= ???? // How to save the number 8?

// Retrieving values
if(mask & Attribute2) do something...;
if(mask & Attribute6) do something...;
int storedValue =  ???? // How to retrieve the 8?

基本上我想在位掩碼中保留3位以在其中保存0-8之間的數字

感謝您抽出寶貴的時間閱讀和幫助。

您可以將值上移到未使用的位,例如

要存儲值:

mask |= val << 28;

要獲取值:

val = mask >> 28;

請注意, mask實際上應該是unsigned以避免在移位時傳播符號位。 如果由於某種原因必須使用帶符號的int,則在檢索val時應添加一個附加的屏蔽操作,例如

val = (mask >> 28) & 0x0f;

暫無
暫無

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

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