11、位段

 

位段以位为单位定义结构体(或共用体)中成员所占存储空间的长度。含有位段的结构体类型称为位段结构。 位段成员必须被声明为unsigned或int类型。

位段结构也是一种结构体类型,只不过其中含有以位为单位定义存储长度的整数类型位段成员。采用位段结构既节省存储空间,又可方便操作。 

位段结构中位段的定义格式为: 

   unsigned <成员名>:<二进制位数> 

例如: 

struct bytedata 

{unsigned a:2;   /*位段a,占2位*/

unsigned:6;  /*无名位段,占6位,但不能访问*/

unsigned:0;     /*无名位段,占0位,表下一位段从下一字边界开始*/

unsigned b:10;  /*位段b,占10位*/

int i;          /*成员i,从下一字边界开始*/

}data;

位段数据的引用:

同结构体成员中的数据引用一样,但应注意位段的最大取值范围不要超出二进制位数定的范围,否则超出部分会丢弃。

例如:data.a=2;   但  data.a=10;就超出范围(a占2位,最大3)

 

关于位段数据,注意以下几点:

 

(1)一个位段必须存储在同一存储单元(即字)之中,不能跨两个单元。如果其单元空间不够,则剩余空间不用,从下一个单元起存放该位段。

(2)可以通过定义长度为0的位段的方式使下一位段从下一存储单元开始。

(3)可以定义无名位段。

(4)位段的长度不能大于存储单元的长度。也不能定义位段数组。

(5)位段无地址,不能对位段进行取地址运算。

(6)位段可以以%d,%o,%x格式输出。

(7)位段若出现在表达式中,将被系统自动转换成整数

将struct和union类型结合使用,即发挥了指针运算的高效,又保护了原始数据不被破坏。具体实现方法如下:

typedef union    /*8位位段分解类型*/

{char value;

struct

{unsigned b0:1;

unsigned b1:1;

unsigned b2:1;

unsigned b3:1;

unsigned b4:1;

unsigned b5:1;

unsigned b6:1;

unsigned b7:1;

}bits;

}

bits8;

这样,用该结构来保存数据,即可以用.value来保存和访问数据,又可以用.b0、.b1...来访问第1、2...等位,非常方便。

位段

位段以位为单位定义结构体(或共用体)中成员所占存储空间的长度。含有位段的结构体类型称为位段结构。

位段结构也是一种结构体类型,只不过其中含有以位为单位定义存储长度的整数类型位段成员。采用位段结构既节省存储空间,又可方便操作。

位段结构中位段的定义格式为:

   unsigned <成员名>:<二进制位数>

例如:

struct bytedata

{unsigned a:2;   /*位段a,占2位*/

unsigned:6;  /*无名位段,占6位,但不能访问*/

unsigned:0;     /*无名位段,占0位,表下一位段从下一字边界开始*/

unsigned b:10;  /*位段b,占10位*/

int i;          /*成员i,从下一字边界开始*/

}data;

位段数据的引用:

同结构体成员中的数据引用一样,但应注意位段的最大取值范围不要超出二进制位数定的范围,否则超出部分会丢弃。

例如:data.a=2;   但  data.a=10;就超出范围(a占2位,最大3)

 

关于位段数据,注意以下几点:

 

(1)一个位段必须存储在同一存储单元(即字)之中,不能跨两个单元。如果其单元空间不够,则剩余空间不用,从下一个单元起存放该位段。

(2)可以通过定义长度为0的位段的方式使下一位段从下一存储单元开始。

(3)可以定义无名位段。

(4)位段的长度不能大于存储单元的长度。也不能定义位段数组。

(5)位段无地址,不能对位段进行取地址运算。

(6)位段可以以%d,%o,%x格式输出。

(7)位段若出现在表达式中,将被系统自动转换成整数

将struct和union类型结合使用,即发挥了指针运算的高效,又保护了原始数据不被破坏。具体实现方法如下:

typedef union    /*8位位段分解类型*/

{char value;

struct

{unsigned b0:1;

unsigned b1:1;

unsigned b2:1;

unsigned b3:1;

unsigned b4:1;

unsigned b5:1;

unsigned b6:1;

unsigned b7:1;

}bits;

}

bits8;

这样,用该结构来保存数据,即可以用.value来保存和访问数据,又可以用.b0、.b1...来访问第1、2...等位,非常方便。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java虚拟机和javaGC_Java虚拟机(三):GC算法和种类

一、介绍GC(Garbage Collection)&#xff0c;垃圾收集Java中&#xff0c;GC的对象是堆空间和永久区二、GC算法1. 引用计数法老牌垃圾回收算法通过引用计算来回收垃圾Java中未使用&#xff0c;使用者有COM、ActionScript3、Python实现&#xff1a;1> 对于一个对象A&#xff0…

看似简单但容易忽视的编程常识

这些年写了很多的代码、也读过很多的人写的代码&#xff0c;这几年&#xff0c;写代码的机会越来越少&#xff0c;但是每次写代码&#xff0c;感觉需要思考的东西越来越多&#xff0c;好的代码确实难能可贵&#xff0c;在国内业界中&#xff0c;好的软件不少&#xff0c;但是好…

NET问答:在 Linq 查询中可以处理异常吗?

咨询区 Jader Dias&#xff1a;先上例子:myEnumerable.Select(a > ThisMethodMayThrowExceptions(a));如何让上面的 Linq查询 即使在抛出异常的情况下也能完整的执行&#xff0c;就像那种带有默认值的 try...catch 一样&#xff0c;当异常抛出时总会执行 catch 后再把它救回…

ASP.NET : Kerberos网络认证过程

今天抽时间初略学习了一下kerberos网络认证过程&#xff0c;作为笔记整理如下&#xff0c;希望与大家分享。 一、Kerberos初步定义: Kerberos这一名词来源于希腊神话“三个头的狗——地狱之门守护者”。Kerberos 是一种网络认证协议&#xff0c;其设计目标是通过密钥系统为客户…

MIPS投RISC-V是龙芯新征程的开始

日前&#xff0c;外媒报道MIPS Technologies宣布将放弃继续设计MIPS处理器&#xff0c;转向了RISC-V。在MIPS加盟RISC-V阵营后&#xff0c;有人鼓吹龙芯要完&#xff0c;但事实上&#xff0c;这完全是不了解龙芯具体情况的臆测。特别是在龙芯开发自主指令集LoongArch之后&#…

近期GitHub上最热门的开源项目(附链接)

2 月份 GitHub 上最热门的开源项目又出炉了&#xff0c;又有哪些新的项目挤进热门榜单了呢&#xff0c;一起来看看。1、nocodehttps://github.com/kelseyhightower/nocode Star 16256这是 2 月份新出炉的项目&#xff0c;可以说是 2018 年最火的佛系编程了&#xff0c;这个项目…

fb静态区域_fb 静态数据

在STAT中定义静态变量&#xff0c;并在INITIAL VALUE中设定初始值&#xff0c;静态变量的初始值会自动存如对应的背景数据块中回答者&#xff1a; 天晴09 - 初级工程师&nbsp&nbsp第9级2008-09-10 17:01:08你可以在fb中定义的时候直接输入初始值&#xff0c;也可以在ob…

Apache-不重启完成添加或更改域名

这两天开始学习Linux环境下配置Apache服务器&#xff0c;结合现在行业实况&#xff0c;我特地注意学习了虚拟主机的配置方法&#xff0c;我买的书上讲的方法是在httpd.conf文件中添加VirtualHost来实现的&#xff0c;经过实践也成功了&#xff0c;但是这个方法需要在配置后重启…

9年没涨价,上太空……这些树莓派的冷知识你知道多少?

作为最成功的微型计算机&#xff0c;开源的树莓派&#xff08;Raspberry Pi&#xff09;在技术圈和学术界一直广受编程爱好者的好评&#xff0c;各路大神基于树莓派制作的新奇设备层出不穷&#xff0c;围绕这款微型计算机已经形成了一种独特的 DIY 文化&#xff0c;相关的开源软…

汇编语言入门教程

学习编程其实就是学高级语言&#xff0c;即那些为人类设计的计算机语言。但是&#xff0c;计算机不理解高级语言&#xff0c;必须通过编译器转成二进制代码&#xff0c;才能运行。学会高级语言&#xff0c;并不等于理解计算机实际的运行步骤。计算机真正能够理解的是低级语言&a…

java将图片铺满panel_如何让添加的背景图片铺满整个JFrame?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼参考这个看看import java.awt.event.*;import javax.swing.*;import java.awt.*;public class BackgroundImage extends JFrame{JScrollPane scrollPane;ImageIcon icon;Image image;public BackgroundImage(){icon newImageIcon(…

SQL如何备份到异机

--SQL如何备份到异机 写成存储过程&#xff0c;建立作业定时备份~~~ --在sql中映射一下就可以了 exec master..xp_cmdshell net use z: \\yizhi\D$ "密码" /user:yizhi\administrator /*--说明: exec master..xp_cmdshell net use z: \\xz\c$ "密码" /user…

轻量易用的微信Sdk发布——Magicodes.Wx.Sdk

概述最简洁最易于使用的微信Sdk&#xff0c;包括公众号Sdk、小程序Sdk、企业微信Sdk等&#xff0c;以及Abp VNext集成。名称NugetMagicodes.Wx.PublicAccount.SdkMagicodes.Wx.PublicAccount.Sdk.AspNetMagicodes.Wx.PublicAccount.Sdk.Abp如何贡献&#xff1f;如何快速封装一个…

数学界的高冷之王,N次拒绝巨额奖金:我穷,但是我不缺钱。。。

在现实生活中&#xff0c;你和谁在一起的确很重要&#xff0c;甚至能改变你的成长轨迹&#xff0c;决定你的人生成败。是否还记得&#xff0c;当你跟学霸做同学的时候&#xff0c;你总会莫名其妙跟他一起撸题目&#xff1b;当宿舍其他兄弟正在打游戏的时候&#xff0c;你也想着…

php-7.1.0,PHP 7.4.0 Alpha 1 v7.4.0 官方最新版

PHP团队近期宣布推出PHP 7.4.0首个版本PHP 7.4.0 Alpha 1&#xff0c;且下一个Alpha 2版本也在计划推出&#xff0c;不过作为早期测试版本&#xff0c;建议不要在生产环境中使用&#xff0c;想体验PHP最新运行逻辑的可以下载体验PHP 7.4.0 Alpha 1源码。基本简介PHP原始为Perso…

OneOfT1,…,Tn清新

OneOf——其中之一&#xff0c;这是一个泛型类&#xff0c;意思就是这里泛型中的任何一个类都可以&#xff0c;还是看代码吧。引入包install-package OneOf实现一个产品查询&#xff0c;有三种情况&#xff0c;查询到返回&#xff1b;查询不到&#xff1b;查询出错。[ApiContro…

VMware Workstation(虚拟机) V6.0.2 Build 59824 汉化版 |

【基本介绍】 VMWare是一个“虚拟PC”软件.它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相 比,VMWare采用了完全不同的概念.多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器.VMWare是真正“同时”运行&…

java导出 elsx 文件,如何获取java导出的excel文件,发送请求导出excle文件

如何获取java导出的excel文件1234567891011121314request.setCharacterEncoding("utf-8");String title request.getParameter("title");//title URLDecoder.decode(title,"utf-8");int maid Integer.parseInt(request.getParameter("ma…

算法分析的正确姿势

一、前言在进一步学习数据结构与算法前&#xff0c;我们应该先掌握算法分析的一般方法。算法分析主要包括对算法的时空复杂度进行分析&#xff0c;但有些时候我们更关心算法的实际运行性能如何&#xff0c;此外&#xff0c;算法可视化是一项帮助我们理解算法实际执行过程的实用…

浏览器缓存机制的研究分享

源宝导读&#xff1a;互联网Web应用大行其道的今天&#xff0c;浏览器已经成为Web应用运行的重要平台。而Web应用对浏览器缓存机制的高效利用&#xff0c;可以大幅提升应用性能和用户体验。本文将对浏览器缓存机制进行系统化的梳理&#xff0c;分享我们的经验。一、背景计算机读…