日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

C语言 联合体使用技巧之位带操作

發(fā)布時(shí)間:2025/4/5 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言 联合体使用技巧之位带操作 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.聯(lián)合體union

當(dāng)多個(gè)數(shù)據(jù)需要共享內(nèi)存或者多個(gè)數(shù)據(jù)每次只取其一時(shí),可以利用聯(lián)合體(union)。在C Programming Language 一書中對(duì)于聯(lián)合體是這么描述的:

1)聯(lián)合體是一個(gè)結(jié)構(gòu);

2)它的所有成員相對(duì)于基地址的偏移量都為0;

3)此結(jié)構(gòu)空間要大到足夠容納最"寬"的成員;

4)其對(duì)齊方式要適合其中所有的成員;

具體使用方式如下,直接看代碼:

typedef union SYSTEM_FAULT{uint16_t all;struct {uint16_t iuvp: 1;//輸入欠壓 (1代表占用1bit) (bit0)uint16_t iovp: 1;//輸入過(guò)壓 (bit1) uint16_t iocp: 1;//輸入過(guò)流 (bit2) uint16_t motp: 1;//功率模塊過(guò)溫 (bit3) uint16_t oovp: 1;//輸出過(guò)流 (bit4) uint16_t oocp: 1;//輸出過(guò)流 (bit5)uint16_t oopp: 1;//過(guò)功率故障 (bit6)uint16_t excu: 1;//電流采樣零漂過(guò)大 (bit7)uint16_t cotp: 1;//CPU過(guò)溫 (bit8)uint16_t ilrv: 1;//輸入極性錯(cuò)誤 (bit9)}bit; }SYSTEM_FAULT_STRUCT; volatile SYSTEM_FAULT_STRUCT gPSM_FAULT;gPSM_FAULT.bit.cotp = 1;if( gPSM_FAULT.all != 0 ) /*當(dāng)bit里有一個(gè)狀態(tài)更改為1,那么就執(zhí)行下面操作*/ {/*這里面執(zhí)行所需操作*/ }

這樣子就很好的解決了需要在if里寫多個(gè)或,需要同時(shí)判斷多次的問(wèn)題。只需要統(tǒng)一判斷一個(gè)值,然后執(zhí)行共同的操作。

總結(jié)

以上是生活随笔為你收集整理的C语言 联合体使用技巧之位带操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。