位域是指資訊在儲存時,並不需要占用乙個完整的位元組, 而只需佔幾個或乙個二進位制位。例如在存放乙個開關量時,只有0和1 兩種狀態, 用一位二進位即可。為了節省儲存空間,並使處理簡便,c語言又提供了一種資料結構,稱為「位域」或「位段」。所謂「位域」是把乙個位元組中的二進位劃分為幾 個不同的區域, 並說明每個區域的位數。每個域有乙個網域名稱,允許在程式中按網域名稱進行操作。 這樣就可以把幾個不同的物件用乙個位元組的二進位制位域來表示。
位域定義和結構體相仿
例如:struct bs
data;//佔兩個位元組
①乙個位域必須儲存在同乙個位元組中,不能跨兩個位元組。如乙個位元組所剩空間不夠存放另一位域時,應從下一單元起存放該位域。也可以有意使某位域從下一單元開始。
struct bs
在這個位域定義中,a佔第一位元組的4位,後4位填0表示不使用,b從第二位元組開始,占用4位,c占用4位。
②由於位域不允許跨兩個位元組,因此位域的長度不能大於乙個位元組的長度,也就是說不能超過8位二進位。
③位域可以無位網域名稱,這時它只用來作填充或調整位置。無名的位域是不能使用的。例如:
struct k
;總結:從以上分析可以看出,位域在本質上就是一種結構體型別, 不過其成員是按二進位分配的。
位域的用法
struct a 位域是指資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如在存放乙個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省儲存空間,並使處理簡便,c語言又提供了一種資料結構,稱為 位域 或 位段 所謂 位域 是把乙個位元組中的二進位劃分為幾 個不同的...
位域的用法
在結構內宣告位域的形式如下 struct type 整數型別,決定了如何解釋位域的值。型別可以是整型 有符號整型 無符號整型。member name 位域的名稱。width 位域中位的數量。寬度必須小於或等於指定型別的位寬度。帶有預定義寬度的變數被稱為位域。位域可以儲存多於 1 位的數,例如,如果需...
C語言之位域的概念和用法
先來個位域申明 struct元素 描述type 整數型別,決定了如何解釋位域的值。型別可以是整型 有符號整型 無符號整型。member name 位域的名稱。width 位域中位的數量。寬度必須小於或等於指定型別的位寬度。帶有預定義寬度的變數被稱為位域。位域可以儲存多於 1 位的數,例如,需要乙個變...