對位操作的C 的簡單封裝

2021-07-10 06:23:01 字數 1063 閱讀 8191

位操作在為硬體程式設計中是非常普遍的。往往是暫存器的各位都具有不同的意義,包括獲取位狀態,給位置數等。

正因為位操作這麼普遍,往往容易出現錯誤,而且除了那些對hex編碼,以及二進位制編碼非常熟悉的大牛之外,一般很難發現錯在哪。

另外,尤其是在中斷之類的要求快速處理完成的過程中,對位操作的執行效率要求也高。

我使用模板對位操作做了乙個簡單的封裝

定義各種型別的位掩碼:

/**

* 位掩碼

*/templateclass bitmaskset;

templateconst t bitmaskset::v = (1u<

bitmaskset::v;

/*** 清除位掩碼

*/templateclass bitmaskclr;

templateconst t bitmaskclr::v = ~(1u<

/*** 獲取位值

* @param v

* @return

*/templateinline tmask getbit( const tv& v )

/** * 位值是否設定

* @param v

* @return

*/templateinline bool isbitset( const tv& v )

/** * 設定位

* @param v

*/templateinline void bitset( tv& v )

/** * 清除位

* @param v

*/templateinline void bitclr( tv& v )

下面來舉幾個例子

比如在pie模組中,使能pdpinta或者禁用,可以使用一下**:

inline void en_pdpinta()

inline void dis_pdpinta()

從編碼風格上看,上面的兩行**非常整齊,而且很直觀的看出都是對位0進行操作,乙個是設定,乙個是清除。

即使有書寫錯誤也很容易識別出來。

C 操作MongoDB的幫助類 簡單封裝

好了,不多說,直接把dll和 記下來,以便以後直接使用。c 版的mongodb驅動是用官方提供的mongo csharp driver 引用 mongodb.driver.dll,mongodb.bson.dll 具體 部分 mongodb幫助類 public class mongodbhelper...

C 簡單封裝的理解

以人說語言為例 介面 inte ce ipeople class chinese ipeople public void kongfu 多型,因為american類中沒有 class american ipeople public void fight class program static vo...

cookie的簡單操作與封裝

設定cookie document.cookie 鍵 值 expires 失效時間 獲取cookie var cookie document.cookie 如果要具體獲取到乙個值,需要處理這個字串 炸開取下標 修改cookie,就是重新設定 乙個cookie 刪除cookie document.co...