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