C語言位域操作

2021-07-24 11:43:33 字數 724 閱讀 7889

1、為了節省空間,操作方便,c語言提供一種資料結構:位域。申明如下:

struct bitfieldbf;
2、基本規則:

(1)如果相鄰位域字段的型別相同,且其位寬之和小於型別的sizeof大小,則後面的字

段將緊鄰前乙個字段儲存,直到不能容納為止;

例子:

int main()

bf;

printf("%d\n",sizeof(bf)); # 1

return 0;

}

2) 如果相鄰位域字段的型別相同,但其位寬之和大於型別的sizeof大小,則後面的字

段將從新的儲存單元開始,其偏移量為其型別大小的整數倍;

例子:

int main()

bf; printf("%d\n",sizeof(bf)); # 2

return 0;

}

3) 整個結構體的總大小為最寬基本型別成員大小的整數倍

例程:

int main()

bf; printf("%d\n",sizeof(bf)); #8

return0;}

int main()

bf; printf("%d\n",sizeof(bf)); #12

return

0;}

C語言位域

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

C語言位域

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

C語言 位域

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