关于位段的解释及用法

首先看看位段的作用:位段是在字段的声明后面加一个冒号以及一个表示字段位长的整数来实现的。这种用法又被就叫作“深入逻辑元件的编程”。

几个关于位段的注意点:1、位段的成员类型只有三种类型:int ,unsigned int ,signed int。位段,它是用来表示字段位长(bit)的,它只有整型值。至于能不能取负数,是由编译器决定的。2、成员名后面的一个冒号和一个整数,这个整数指定该位段的位长(bit);3、许多编译器把位段成员的字长限制在一个int的长度范围之内;4、位段成员在内存的实现是从左到右还是从右到左是由编译器来决定的。

下面我们就来看看,它到底是什么东西(我先假定大家的机器字长为32位):
  Struct WORD
  {
   
       unsigned  int  chara   : 6:
     unsigned int font : 7;
    
 unsigned int maxsize : 19;
  };
  Struct WORD chone;

它最多可以容纳64(既我说的unsigned int chara :6; 它总共是6位)个不同的字符值,可以处理128(既unsigned int font : 7 ;既2的7次方)种不同的字体,和2的19次方的单位长度的字。maxsize是19位,它是无法被一个short int 类型的值所容纳的,其余的成员的长度比char还小,如果让他们共享32位机器字长,这就避免用一个32位的整数来表示maxsize的位段。

用位段的理由:

         1、它能够把长度为奇数的数据包装在一起,节省存储空间,当程序需要成千上万个这样的结构体时,

                选择位段是比较明智的

         2、他们可以很方便的访问一个整数值的部分内容。在操作系统和TCP/IP中可能用到。

点评:使用位段只是基于方便的目的,任何可以用位段实现的任务都可以使用移位和屏蔽来实现。

           通俗来讲,位段只不过是替用户做了一些移位和屏蔽,使用户能很清晰的读或写某些位。


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值