让人疑惑的C语言位域

在实际的应用中,有些数据的存储只需要几个二进制位,而不需要一个字节或几个字节,比如:电灯接通电源的状态,只有通电和未通电两种状态,用 1 和 0 就可以表示,为了满足这种需求,C 语言中引入了位域的概念

位域是什么

位域是一种数据结构,可以把数据以二进制位的形式紧凑的存储,它允许程序对此结构的位进行操作

在计算机早期,内存是非常稀缺的,需要尽可能的节省每一个字节,所以,C 语言中就出现了能针对二进制位进行操作的位域

为什么要用位域

位域这种数据结构,可以最大限度的节省存储空间,对于一些非常频繁的操作,需要尽可能的减少操作的数据,比如:在开发网络应用时,数据的序列化和反序列化是很频繁的,如果能减少数据的长度,对提升数据打包效率是很有帮助的

位域的出现,让我们可以用变量名代表某些bit,并通过变量名获取和设置 bit 的值,而不是通过晦涩难理解的位操作来进行,例如:

struct field
{
unsigned char b0 : 3,
b1 : 2,
b2 : 3;
};

struct field bf;
bf.b1 = 3;

<< · Back Index ·>>

发表回复

相关推荐

“暴雨”诗三篇

​​第一篇:东边日出西边雨 溪上遇雨二首其二 唐 崔道融 坐看黑云衔猛雨, 喷洒前山此独晴。 忽惊云雨在头上, 却是山前晚照 ...

· 39秒前

人物篇|《奪命金》:劉青雲——一個時代緩緩落下的最後一塊幕佈

如果說黃秋生是東邪,離經叛道,劍走偏鋒,吳鎮宇是西毒,一雙眼睛像毒蛇一樣咬住你,任達華是南帝,樸實無華,渾然天成,那...

· 2分钟前

紅雙喜乒乓球拍推薦選擇攻略(熱銷爆款)

國貨之光紅雙喜球拍,是許多國內乒乓球愛好在接觸乒乓球時最先瞭解的品牌,也是很多人買的第一塊球拍,包括我在內第一塊球拍...

· 4分钟前

他连续强奸幼女40多人,是沈阳历史上头号色魔 | 血案系列0202

1 丁零零零零…电话铃声急促,李明杰拿起了话筒。洮昌公安派出所值班民警报告:“刚才,管区内一对夫妇来派出所报案,他们的1 ...

· 7分钟前

【西班牙高校攻略】以老国王之名——胡安·卡洛斯国王大学(已开放2022年硕士申请)

胡安·卡洛斯国王大学Logo 胡安·卡洛斯国王大学 (Universidad Rey Juan Carlos) ,简称胡卡( URJC),是一所以西班牙老国王 ...

· 7分钟前