c語言編程

姓名 郭宇

學(xué)號 16130130299

轉(zhuǎn)載自【C語言編程之位結(jié)構(gòu)】

http://m.toutiaocdn.cn/group/6488652660613317133/?iid=17602826099&app=news_article&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share

【嵌牛導(dǎo)讀】:c語言 位域結(jié)構(gòu)體

【嵌牛鼻子】 編程 ? c語言

【嵌牛提問】怎樣定義位域結(jié)構(gòu)體 及它的用途

【嵌牛正文】:

【C語位結(jié)構(gòu)是一種特殊的結(jié)構(gòu), 在需按位訪問一個字節(jié)或字的多個位時, 位結(jié)構(gòu)比按位運算符更加方便棠隐。位結(jié)構(gòu)定義的一般形式為:

struct位結(jié)構(gòu)名{

數(shù)據(jù)類型 變量名: 整型常數(shù);

數(shù)據(jù)類型 變量名: 整型常數(shù);

} 位結(jié)構(gòu)變量;

其中: 數(shù)據(jù)類型必須是char或16位int(unsigned或signed)龄砰。 整型常數(shù)必須是非負(fù)的整數(shù), 范圍是0~15, 表示二進(jìn)制位的個數(shù), 即表示有多少位懒构。變量名是選擇項, 可以不命名, 這樣規(guī)定是為了排列需要垃僚。

例如: 下面定義了一個位結(jié)構(gòu)。

struct{

unsigned incon: 8; /*incon占用低字節(jié)的0~7共8位*/

unsigned txcolor: 4;/*txcolor占用高字節(jié)的0~3位共4位*/

unsigned bgcolor: 3;/*bgcolor占用高字節(jié)的4~6位共3位*/

unsigned blink: 1; /*blink占用高字節(jié)的第7位*/

}ch;

位結(jié)構(gòu)成員的訪問與結(jié)構(gòu)成員的訪問相同沸手。

例如: 訪問上例位結(jié)構(gòu)中的bgcolor成員可寫成:

ch.bgcolor

注意:

1. 位結(jié)構(gòu)中的成員可以定義為unsigned, 也可定義為signed, 但當(dāng)成員長度為1時, 會被認(rèn)為是unsigned類型针炉。因為單個位不可能具有符號。

2. 位結(jié)構(gòu)中的成員不能使用數(shù)組和指針, 但位結(jié)構(gòu)變量可以是數(shù)組和指針, 如果是指針, 其成員訪問方式同結(jié)構(gòu)指針蔬墩。

3. 位結(jié)構(gòu)總長度(位數(shù)), 是各個位成員定義的位數(shù)之和, 可以超過兩個字節(jié)。

4. 位結(jié)構(gòu)成員可以與其它結(jié)構(gòu)成員一起使用耗拓。

例如:

struct info{

char name[8];

int age;

struct addr address;

float pay;

unsigned state: 1;

unsigned pay: 1;

}workers;’

上例的結(jié)構(gòu)定義了關(guān)于一個工從的信息拇颅。其中有兩個位結(jié)構(gòu)成員, 每個位結(jié)構(gòu)成員只有一位, 因此只占一個字節(jié)但保存了兩個信息, 該字節(jié)中第一位表示工人的狀態(tài), 第二位表示工資是否已發(fā)放。由此可見使用位結(jié)構(gòu)可以節(jié)省存貯空間乔询。

問題的解答

結(jié)構(gòu)struct x,有三個成員s1,s2,s3每一個成員占3 bit樟插,結(jié)構(gòu)與char c union ;

char 一般機(jī)器占一個字節(jié)(8 bit ,100 二進(jìn)制值為:01100100,所以s1后三bit(6,7,8 bit) :100,s2為中間三位(3,4,5 bit)為100 s3為01,所以printf(”%d/n”,v.x.s3)是1,其它是4。現(xiàn)在大多數(shù)系統(tǒng)都是將低字位放在前面黄锤,而結(jié)構(gòu)體中位域的申明一般是先聲明高位搪缨。

100 的二進(jìn)制是 001 100 100

低位在前 高位在后

001—-s3

100—-s2

100—-s1

所以結(jié)果應(yīng)該是 1

如果先申明的在低位則:

001—-s1

100—-s2

100—-s3

結(jié)果是 4

其中unsigned short s1:3; 中的“:”又是什么意思?

指定位段, 3代表預(yù)定s1占3bit.

為什么是4?

struct

{

unsigned short s1:3; //一個字節(jié). 雖然預(yù)定為3bit,但系統(tǒng)的存儲空間為至少一字節(jié).

unsigned short s2:3; //一個字節(jié)

unsigned short s3:3; //一個字節(jié)

}x;

這樣在聯(lián)合union中最大的成員為三個字節(jié),而最終結(jié)果為了內(nèi)存對齊(對齊為4的倍數(shù)).取為4

位結(jié)構(gòu)在DSP鸵熟、MCU等嵌入式中廣泛應(yīng)用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末副编,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子流强,更是在濱河造成了極大的恐慌痹届,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件打月,死亡現(xiàn)場離奇詭異队腐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)奏篙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門柴淘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人秘通,你說我怎么就攤上這事悠就。” “怎么了充易?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長荸型。 經(jīng)常有香客問我盹靴,道長,這世上最難降的妖魔是什么瑞妇? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任稿静,我火速辦了婚禮,結(jié)果婚禮上辕狰,老公的妹妹穿的比我還像新娘改备。我一直安慰自己,他們只是感情好蔓倍,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布悬钳。 她就那樣靜靜地躺著,像睡著了一般偶翅。 火紅的嫁衣襯著肌膚如雪默勾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天聚谁,我揣著相機(jī)與錄音母剥,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛环疼,可吹牛的內(nèi)容都是我干的习霹。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼炫隶,長吁一口氣:“原來是場噩夢啊……” “哼淋叶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起等限,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤爸吮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后望门,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體形娇,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年筹误,在試婚紗的時候發(fā)現(xiàn)自己被綠了桐早。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡厨剪,死狀恐怖哄酝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情祷膳,我是刑警寧澤陶衅,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站直晨,受9級特大地震影響搀军,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜勇皇,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一罩句、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧敛摘,春花似錦门烂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至捕虽,卻和暖如春氓润,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背薯鳍。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工咖气, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留挨措,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓崩溪,卻偏偏與公主長得像浅役,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子伶唯,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容