BIT位操作用途

2021-04-30 14:13:06 字數 961 閱讀 6426

bit的思路是很自然而且緊湊的。 1.如果業務數固定,比如少於32項業務,那麼乙個32位的整型值足以表達: 定義列舉型別: enum business 則可進行如下的組操作: business businessgroup = business_1 | business_6 | business_23; // 建立乙個業務組,包含了業務1,業務6和業務23 businessgroup |= business_19; // 新增業務19至該業務組中 if (businessgroup & business_21) ... // 判斷業務21是否在該組中 businessgroup &= ~business_6; // 從該組中刪除業務6 businessgroup ^= business_9; // 「反轉」操作:如果業務9在組中,則從組中刪除之;否則將業務9加入組中。 businessgroup = 0; // 清空所有業務 businessgroup = ~0u; // 新增所有業務 2.如果如樓主所言,業務數量不固定,甚至有可能在執行期動態增加業務的話,那麼乙個基本的數值肯定已經無法滿足需求。可以封裝乙個class來處理這樣的情況。 如果考慮到節省空間,建議樓主可以用c++的vector

來建立乙個bool型別的vector: vector

businessgroup; businessgroup.resize(100); // 該組可包含100項業務 businessgroup[10] = true; // 將業務10加入該組 businessgroup[15] = false; // 將業務15從組中刪除 businessgroup.resize(150); // 動態增加業務總數至150 ... 之所以使用vector

,有乙個好處就是c++特別對vector

在元素儲存方面只占用32位也就是四個位元組的空間,和你用乙個整數表示的效率是一樣的。(當然具體編譯器可能會安插一些用於對齊的bits或額外的class資訊等.) 這個方式兼具效率與直觀度,樓主不妨考慮將其封裝成為乙個businessgroup的類。

位操作用途特徵與技巧

位操作在計算機中是一種非常高效的運算。其基本操作為 基本操作 與 或,非,異或 兩數的對應位 同為0,異為1。如 0110 1100 1010 先說說用途吧。一 用途 1 沒想到的交換操作 不引入任何變數 交換操作除了可以用 f a,b 實現外,如果要求不能引入任何新的變數。則可用異或操作 a的二進...

嵌入式 位 bit 操作

嵌入式系統總是要使用者對變數或暫存器進行位操作。給定乙個整型變數 a,寫兩段 第乙個設定a的 bit 3 第二個清除a 的 bit 3 在以上兩個操作中,要保持其它位不變。對這個問題有三種基本的反應 1 不知道如何下手。該被面者從沒做過任何嵌入式系統的工作。2 用 bit fields bit fi...

C 20 bit 位操作函式

c 20 增加了標頭檔案,提供數個訪問 操作及處理單獨位和位序列的函式模板。1 方法作用 bit cast 將乙個型別的物件表示重解釋為另一型別的物件表示 has single bit 檢查乙個數是否為二的整數次冪 bit ceil 尋找不小於給定值的最小的二的整數次冪 bit floor 尋找不大...