c語言中位字段與結(jié)構(gòu)聯(lián)合的組合使用詳解
舉例:
===================================================
/** INITRM - Initialization of internal ram position register; 0x0000 0010 **/
typedef union {
byte Byte;
struct {
byte RAMHAL :1;
byte :1;
byte :1;
byte RAM11 :1;
byte RAM12 :1;
byte RAM13 :1;
byte RAM14 :1;
byte RAM15 :1;
} Bits;
struct {
byte :1;
byte :1;
byte :1;
byte grpRAM_11 :5;
}MergedBits;
} INITRMSTR;
那么賦值方式就有三種,比如直接給INITRMSTR賦值
INITRMSTR = 0xEF;
也可以位字段賦值
INITRMSTR.Bits.RAM15 = 1;
也可以多位的位字段賦值
INITRMSTR.MergedBits.grpRAM_11 = 26
(26是十進(jìn)制,轉(zhuǎn)換成二進(jìn)制是11010, 直接表示 RAM_11 = 0, RAM_12 = 1, RAM_13 = 0, RAM_14 = 1, RAM_15 = 1)
需要注意的是,在二進(jìn)制中順序是從右向左,在這個(gè)結(jié)構(gòu)體中是從上向下.
相關(guān)文章
C++ 智能指針的模擬實(shí)現(xiàn)實(shí)例
這篇文章主要介紹了C++ 智能指針的模擬實(shí)現(xiàn)實(shí)例的相關(guān)資料,智能指針是一個(gè)類,它把普通指針封裝起來,能實(shí)現(xiàn)和普通指針同樣的功能。,需要的朋友可以參考下2017-07-07C++計(jì)算整數(shù)序列的最長遞增子序列的長度操作
這篇文章主要介紹了C++計(jì)算整數(shù)序列的最長遞增子序列的長度操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12C語言動(dòng)態(tài)內(nèi)存的分配實(shí)例詳解
動(dòng)態(tài)內(nèi)存管理同時(shí)還具有一個(gè)優(yōu)點(diǎn),當(dāng)程序在具有更多內(nèi)存的系統(tǒng)上需要處理更多數(shù)據(jù)時(shí),不需要重寫程序,下面這篇文章主要給大家介紹了關(guān)于C語言動(dòng)態(tài)內(nèi)存分配的相關(guān)資料,需要的朋友可以參考下2022-06-06Visual Studio 2019 Professional 激活方法詳解
這篇文章主要介紹了Visual Studio 2019 Professional 激活方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05Win11+?VS2022編譯?FFmpeg6.0?靜態(tài)庫的詳細(xì)過程
這篇文章主要介紹了Win11+VS2022編譯FFmpeg6.0靜態(tài)庫的方法,本文通過圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08C/C++實(shí)現(xiàn)的游戲角色名稱名字隨機(jī)生成代碼
這篇文章主要介紹了C/C++實(shí)現(xiàn)的游戲角色名稱名字隨機(jī)生成代碼,本文特別針對(duì)一些古典游戲的角色名稱進(jìn)行隨機(jī)生成,需要的朋友可以參考下2015-05-05