C C 位域總結

2022-08-29 19:06:13 字數 822 閱讀 2412

最近接觸到了位域這個概念,大家都知道位元組是記憶體定址的最小單元,但有時我們僅需要幾位的二進位制空間來儲存資料,c語言定義了位域幫助更加接近底層,按照需求來分配空間,將1bit 分為更小的空間。

一、位域的使用方法

1、定義

struct 位域結構名

;其中位域列表的形式為: 型別說明符 位網域名稱:位域長度

例:struct test1

bits;

sizeof(test1) = 4, 為乙個整形所佔空間(作業系統為64位)

下面我通過幾個例子來介紹位域的注意事項。

例1:struct test1

bits;

位於變數必須儲存在同一位元組中,不能跨兩個位元組,若剩餘位置不夠則從下一位元組開始,同樣可以使用int :0;使ib從下乙個int單元開始(可以使用其他整形和字元型,不能使用浮點型)

sizeof(test1) = 8

例2:struct test2

bits;

sizeof(test2) =3 無名位域可用於佔位。

例3:struct test3

sizeof(test3) = 16

位域要遵守位元組對齊,即記憶體單元的首位址要能被基本型別成員的大小所整除。

二、位域的使用

與結構體相似:

struct

bits;

int main()

輸出:3

ps:實際操作中編譯器會對位域有所優化,例如:

struct test4

bits;

ia位數大於8,不符合「乙個位域必須儲存在同乙個位元組中,不能跨兩個位元組」的規則,但實際卻沒有問題。

C C 位域定義

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

C C 中的位域 bit field

位域是c c 中常用的資料結構。在某些情況下合理的使用位域可以節省儲存空間,提高執行效率並提高程式的可讀行。按照我以往的程式設計經驗來看,通常以下情況下會優先考慮使用位域。1 有很多的狀態標記,需要集中儲存,比如tcp鏈結 的狀態 2 協議棧相關的資料結構,尤其是底層通訊協議中很多情況使用乙個或者幾...

C C 大小端 位域 記憶體詳解

面試時遇到關於大小端 位段 或者叫位域 和記憶體對齊的考題,然後就不知所措了。這部分對於嵌入式底層工作者是必須要掌握的,其他方面不是必須的 但還是很有必要學習理解這些知識點,因為它可以讓你更了解c 的,了解程式在記憶體的運 況,也能加深對計算機系統的理解。1 從靜態儲存區分配 此時的內存在程式編譯的...