c語言位域

2021-10-02 11:25:30 字數 431 閱讀 4367

位域簡介:

c語言位域是一種很少見但卻很常用的技巧,位域能夠真正的控制位元組、整型等資料型別的每一位。在很多通訊協議中,以mqtt協議為例,通常對包頭位元組的每一位,都賦予的不同的含義。此時,就非常適合使用位域運算。

以下是測試程式:

#include typedef struct

;

};} bit_area;

int main(void)

這個程式借鑑了mqtt協議的思路,將位域和包頭位元組做成 union 聯合體。這樣,我們可以根據協議單獨設定每一位,由於 union 型別共用記憶體,修改位域同時也巧妙的修改了包頭位元組。

測試結果:

C語言位域

有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如在存 放乙個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省儲存空間,並使處理簡便,語言又提供了一種資料結構,稱為 位域 或 位段 所謂 位域 是把乙個位元組中的二進位劃分為幾個不同的區域,並說明每個區域的位...

C語言位域

1.乙個位域必須儲存在同乙個位元組中,不能跨兩個位元組。如乙個位元組所剩空間不夠存放另一位域時,應從下一單元起存放該位域。也可以有意使某位域從下一單元開始。例如 struct bs 在這個位域定義中,a佔第一位元組的 2位,後6位填 0表示不使用,c 從第二位元組開始,占用1位 2.由於位域不允許跨...

C語言 位域

有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如在存放乙個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省儲存空間,並使處理簡便,c語言又提供了一種資料結構,稱為 位域 或 位段 所謂 位域 是把乙個位元組中的二進位劃分為幾 個不同的區域,並說明每個區域的...