C語言當中位段的使用

2021-06-04 12:14:06 字數 815 閱讀 3743

位段以位為單位定義結構體(或共用體)中成員所佔儲存空間的長度。

含有位段的結構體型別稱為位段結構。

位段結構也是一種結構體型別,只不過其中含有以位為單位定義儲存長度的整數型別位段成員。採用位段結構既節省儲存空間,又可方便操作。

位段結構中位段的定義格式為:

unsigned 《成員名》:《二進位制位數》

例如:struct bytedata

data;

位段資料的引用:

同結構體成員中的資料引用一樣,但應注意位段的最大取值範圍不要超出二進位制位數定的範圍,否則超出部分會丟棄。

例如:data.a=2;   但  data.a=10;就超出範圍(a佔2位,最大3)

關於位段資料,注意以下幾點:

(1)乙個位段必須儲存在同一儲存單元(即字)之中,不能跨兩個單元。如果其單元空間不夠,則剩餘空間不用,從下乙個單元起存放該位段。

(2)可以通過定義長度為0的位段的方式使下一位段從下一儲存單元開始。

(3)可以定義無名位段。

(4)位段的長度不能大於儲存單元的長度。

(5)位段無位址,不能對位段進行取位址運算。

(6)位段可以以%d,%o,%x格式輸出。

(7)位段若出現在表示式中,將被系統自動轉換成整數

#include

#include

struct bytedata

data;

int main()

bit_f.id:10, bit_f.id:0x0, bit_f.msg:256

c語言 位段

位段 位段的宣告和結構是類似的,有兩個不同 1 位段的成員必須是int unsigned int char 或 signed int。2 位段的成員後邊有乙個冒號和乙個數字。例子 include include struct a struct b struct c int main 經過 驗證 1 ...

C語言位段

有時,儲存1個資訊不必占用1個位元組,只需二進位制的1個 或多個 位就夠用。如果仍然使用結構型別,則造成記憶體空間的浪費。為此,c語言引入了位段型別。位段的概念與定義 所謂位段型別,是一種特殊的結構型別,其所有成員均以二進位制位為單位定義長度,並稱成員為位段。例如,cpu的狀態暫存器,按位段型別定義...

C語言位域 位段

有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如開關只有通電和斷電兩種狀態,用0和1表示足以,也就是用乙個二進位。所以c語言又提供了一種資料結構,稱為位域或 位段。位域在應用開發中較少使用,你可以暫時跳過,遇到相關問題再回來溫習。所謂 位域 是把乙個位元組中的二進位...