C语言-位段详解
1.位段的定義:
位段是定義結(jié)構(gòu)體(或聯(lián)合體)中的成員變量所占的空間,單位是bit。含有位段的結(jié)構(gòu)體(聯(lián)合體)稱為位段結(jié)構(gòu)。
2.位段的意義:
能夠節(jié)省空間。比如性別,2個bit位可以表示2^2=4種可能性,不需要一個整形32個bit位。
3.位段相對于結(jié)構(gòu)體的限制:
位段的聲明跟結(jié)構(gòu)體相比,有兩個限制:
1.位段的成員必須是整形家族的,如int,unsigned int或signed int或char類型的,因此位段大小必須<=32bit
2.位段的成員名后邊有一個冒號和一個數(shù)字
4.位段的內(nèi)存分配:
1.位段在內(nèi)存空間上是按照需要以4個字節(jié)(int)或者1個字節(jié)(char)的方式來開辟的。
2.位段設(shè)計很多不確定的因素,位段是不跨平臺的,注重可移植的程序應(yīng)該避免使用段位
位段舉例,如:
struct S {char a : 3; //a成員占3個比特位char b : 4; //b成員占4個比特位char c : 5; //c成員占5個比特位char d : 4; //d成員占4個比特位 };int main() {struct S s = { 0 };s.a = 10;s.b = 12;s.c = 3; s.d = 4;return 0; }結(jié)構(gòu)體變量s的成員bit位使用:
a占3個bit位,但10的二進制有4個bit位1010,要存入3個bit位,低3位存入010,高1位丟棄
b占4個bit位,12的二進制有4個bit位1100,剛好可以存入4個bit位
c占5個bit位,3的二進制有2個bit位11,可以存入5個bit位
d占4個bit位,4的二進制有3個bit位100,可以存入4個bit位
使用VS2019編譯,F10調(diào)試,監(jiān)視內(nèi)存,輸入&s,內(nèi)存中存入的就是62 03 04
?
?
?
?
總結(jié)
- 上一篇: 脑机接口数据分析工具EEGLAB01--
- 下一篇: Linux线程的终止