范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

CC位域Bitfields学习心得

  Bit field 的定义
  "位域" 或 "位段"(Bit field)为一种数据结构,可以把数据以位的形式紧凑的储存,并允许程序员对此结构的位进行操作。这种数据结构的一个好处是它可以使数据单元节省储存空间,当程序需要成千上万个数据单元时,这种方法就显得尤为重要。第二个好处是位段可以很方便  的  访问一个整数值的部分内容从而可以简化程序源代码。而这种数据结构的缺点在于,位段实现依赖于具体的机器和系统,在不同的平台可能有不同的结果,这导致了位段在本质上是不可移植的.
  位域的声明:
  位域使用以下的结构声明 , 该结构声明为每个位域成员设置名称,并决定其宽度 struct bit_field_name { 	type member_name : width; };
  Elements
  Description
  bit_field_name
  位域结构名
  type
  位域成员的类型,必须为 int、signed int 或者 unsigned int 类型
  member_name
  位域成员名
  width
  规定成员所占的位数
  例如声明如下一个位域: struct _PRCODE { 	unsigned int code1: 2; 	unsigned int cdde2: 2; 	unsigned int code3: 8; }; struct _PRCODE prcode;
  该定义 使   prcode  包含 2 个 2 Bits 位域和 1 个 8 Bits 位域,我们可以使用结构体的成员运算符对其进行赋值 prcode.code1 = 0; prcode.code2 = 3; procde.code3 = 102;
  tips:
  赋值时要注意值的大小不能超过位域成员的容量,例如 prcode.code3 为 8 Bits 的位域成员,其容量为 2^8 = 256,即赋值范围应为 [0,255]。 位域的大小和对齐位域的大小
  例如以下位域: struct box  { 	unsigned int a: 1; 	unsigned int  : 3; 	unsigned int b: 4; };
  该位域结构体中间有一个未命名的位域,占据 3 Bits,仅起填充作用,并无实际意义。 填充使得该结构总共使用了 8 Bits。但 C 语言使用 unsigned int 作为位域的基本单位,即使一个结构的唯一成员为 1 Bit 的位域,该结构大小也和一个 unsigned int 大小相同。 有些系统中,unsigned int 为 16 Bits,在 x86 系统中为 32 Bits。文章以下均默认 unsigned int 为 32 Bits。 位域的对齐
  一个位域成员不允许跨越两个 unsigned int 的边界,如果成员声明的总位数超过了一个 unsigned int 的大小, 那么编辑器会自动移位位域成员,使其按照 unsigned int 的边界对齐。
  例如: struct stuff  { 	unsigned int field1: 30; 	unsigned int field2: 4; 	unsigned int field3: 3; };
  field1 + field2 = 34 Bits,超出 32 Bits, 编译器会将field2移位至下一个 unsigned int 单元存放, stuff.field1 和 stuff.field2 之间会留下一个 2 Bits 的空隙, stuff.field3 紧跟在 stuff.field2 之后,该结构现在大小为 2 * 32 = 64 Bits。
  这个空洞可以用之前提到的未命名的位域成员填充,我们也可以使用一个宽度为 0 的未命名位域成员令下一位域成员与下一个整数对齐。
  例如: struct stuff  { 	unsigned int field1: 30; 	unsigned int       : 2; 	unsigned int field2: 4; 	unsigned int       : 0; 	unsigned int field3: 3;  };
  这里 stuff.field1 与 stuff.field2 之间有一个 2 Bits 的空隙,stuff.field3 则存储在下一个 unsigned int 中,该结构现在大小为 3 * 32 = 96 Bits。 位域的初始化和位的重映射初始化
  位域的初始化与普通结构体初始化的方法相同,这里列举两种,如下: struct stuff s1= {20,8,6};
  或者直接为位域成员赋值 struct stuff s1; s1.field1 = 20; s1.field2 = 8; s1.field3 = 4;位域的重映射 (Re-mapping)
  声明一个 大小为 32 Bits 的位域 struct box { 	unsigned int ready:     2; 	unsigned int error:     2; 	unsigned int command:   4; 	unsigned int sector_no: 24; }b1;
  利用重映射将位域归零 int* p = (int *) &b1;  // 将 "位域结构体的地址" 映射至 "整形(int*) 的地址"  *p = 0;                // 清除 s1,将各成员归零
  利用联合 (union) 将 32 Bits 位域 重映射至 unsigned int 型
  先简单介绍一下联合
  "联合" 是一种特殊的类,也是一种构造类型的数据结构。在一个 "联合" 内可以定义多种不同的数据类型, 一个被说明为该 "联合" 类型的变量中,允许装入该 "联合" 所定义的任何一种数据,这些数据共享同一段内存,以达到节省空间的目的
  "联合" 与 "结构" 有一些相似之处。但两者有本质上的不同。在结构中各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和(空结构除外,同时不考虑边界调整)。而在 "联合" 中,各成员共享一段内存空间, 一个联合变量的长度等于各成员中最长的长度。应该说明的是, 这里所谓的共享不是指把多个成员同时装入一个联合变量内, 而是指该联合变量可被赋予任一成员值,但每次只能赋一种值, 赋入新值则冲去旧值。
  我们可以声明以下联合: union u_box {   struct box st_box;        unsigned int ui_box; };
  x86 系统中 unsigned int 和 box 都为 32 Bits, 通过该联合使 st_box 和 ui_box 共享一块内存。具体位域中哪一位与 unsigned int 哪一位相对应,取决于编译器和硬件。
  利用联合将位域归零,代码如下: union u_box u; u.ui_box = 0;
  文章转载自: http://www.yuan-ji.me/C-C-%E4%BD%8D%E5%9F%9F-Bit-fields-%E5%AD%A6%E4%B9%A0%E5%BF%83%E5%BE%97/

当年乔布斯说除了搜索引擎,谷歌的产品,包括安卓和GoogleDocs,都是狗屎,这句话有道理吗?关于乔布斯的这个说法,传闻存在很久了,我们假定乔布斯的确说过这句话。我们来讨论一下,这句话要传达什么样的信息。乔布斯是一个不世出的天才,而且是一个完美主义者。他对绝大多数事情都有着请你谈谈碳酸氢铵在苹果树的应用看法?碳酸氢氨是一种氮肥,含氮量17。1,我这几年在苹果树上应用,效果非常好。其实,几十年前,碳酸氢氨就在我国农业上应用,那时候,还是生产队呢。现在,在烟台地区,大量应用在苹果栽培上。我找不良科技公司开发软件血本无归,这个损失可以找他们要回来吗?我是软件公司的,我敢说即使是签了合同这笔款也要不回来了。做软件开发这么多年,里面的套路我了解得太清楚了,甚至有些套路是被客户逼出来的。就说你的这件事吧,我相信你们公司肯定没有懂软件微软SurfaceDuo2与三星GalaxyZFold3对比谁胜出?可折叠手机微软SurfaceDuo2的更新,带来了显著的升级,同时也补齐了其前身的一些短板。这边的高级折叠手机三星GalaxyZFold3也进行了改进,包括快速刷新的显示屏和SPe华为mete10por和p20哪个好?我是科技数码随时答,很高兴能回答这个问题华为P20和华为mate10pro那个好?这里首先要说一下,没有那个手机好不好,只有适合不适合自己。华为P系列走的是时尚年轻的产品风格,对相花椒母公司冲刺港股前8个月营收近30亿周鸿祎为大股东雷递网雷建平10月26日报道花椒母公司花房集团日前向港股递交招股书,准备在香港上市。前8个月营收近30亿花房集团为全球用户提供音视频直播娱乐及社交网络服务,是由花椒直播和六间房合并为什么很多人都在说360是流氓公司?问360杀毒真实水平如何?答很厉害!能把我们C老师刚编译出来的程序给干掉!360杀毒能力强吗?强!在业界也属于领先态。可为什么我从来不用360杀毒360卫士呢?来说一件真实的事情前华为公司摊牌,大量鸿蒙新机现货供应,8256G不到三千像其他手机厂商一样,今年的华为也在积极准备双十一增销量的活动,尽管对比友商来看,现在华为手机在数量上很吃亏,但在质量方面确实是更好,这也是到了现在还有很多人非华为不买的原因。因为在罗永浩任小米大局官送福利,联手雷军收购苹果,先交朋友?在数码科技圈,罗永浩准备收购苹果公司的消息早已经尽人皆知,他也在不遗余力的进行着这个艰巨的任务。老罗做产品的能力和思维也是受到了很多网友的认可,锤粉对锤子手机的认可度很高。作为手机我国芯片行业要多久才可以赶上美国?中美芯片战我不知道为啥那么多网民喜欢和美国别苗头。就目前来说,这是几乎不可能完成的任务,而且是不理智的。看到很多评论区的人都提到了和美国人别苗头的必要性。其实这篇文章不谈必要性,而外卖和网约车已经透支了多少年轻人未来的生存能力?什么未来生存能力?除了公务员,未来谁能给你保证?开玩笑应该是外卖和网约车正在让千千万万的年轻人逐步丧失将来的生存能力!!资本运营,不彻底整改会毁掉的下一代。个人觉得,没有说透支不透
孟晚舟案最新转机,加法官对美国反戈一击,华为充满信心孟晚舟案最后时刻加法官对美国反戈一击华为发声回应表示充满信心据央视新闻2021年8月19号的报道当地时间8月18号下午孟晚舟引渡案在加拿大哥伦比亚省高等法院的审理已全部结束接下来加红米Note11Pro袭来,6000mAh骁龙芯片,售价不足2K?说起红米手机,相信所有人首先想到的就是性价比,自红米成立之后,一直都致力于中低端性价比手机,相比小米数字系统,性价比更高。无论是性能芯片还是续航能力,在同价位之中,红米总能够给予用为什么三国演义等名著很多人看不下去还叫名著呢?名著,故名思意即很有名的著作。三国演义是我國四大名著之一。名著这称谓是早就认定的。你不去看,也不会否定它是名著,就如诺奖作品,你没参加评定,它照样能获奖。你说很多人,一百个,一千个2021中国国际数字博览会展馆黑科技带来全新体验时间折叠数字孪生脑电交互9月6日至8日,以创新发展与数字经济为主题的2021中国国际数字经济博览会将在石家庄(正定)国际会展中心举办。届时,468家企业将在4个室内展馆1个室外展区小牛九号电动车价格为什么卖得贵?跟爱玛雅迪又有什么区别?电动车行业经历了多次洗牌之后,目前剩下都是一些实力较强的品牌,比如爱玛雅迪新日绿源等传统豪强品牌,但也有九号小牛哈啰等互联网品牌赫然在列,这些品牌价格卖得这么贵,背后的原因是什么?经常打游戏刷视频,重度手机使用者,价格23k有哪些手机推荐?文小伊评科技根据题主的需求是需要一款经常用来打游戏刷视频的手机,并且题主本身还是重度的手机使用者,那么对于题主来说这款手机要具备如下的特点必备特质超强性能以及高续航加分配置快充,高爱立信CEO誓言将重新夺回在中国失去的市场份额今年二季度,瑞典电信巨头爱立信在中国市场的销售额骤降六成之多,连带导致公司整体销售额三年来也首次出现了下降。此后又有消息显示,在中国最新一轮的5G设备招标中,爱立信只拿到零星份额。比5G速度快50倍,中国6G技术大获成功,美欧各国坐立不安图为中国6G试验卫星如今中国已经建成了全世界规模最大的5G网络,把美国等西方国家都甩在了身后,而让美国专家紧张的是,在西方还在努力建设5G网络系统的时候,中国的6G技术大获成功,据ETC的技术落后吗?为什么不直接扫描车牌绑定微信或支付宝呢?ETC落后?这玩笑有点大了。很多事情我们不能只是听说就觉得很先进,比如支付宝扫车牌支付过路费,听起来很先进,但是以目前的技术条件来说谈不上先进。支付宝扫车牌支付过路费只是改变了付款为什么TPLINK(普联)从来不公布路由器产品的CPU运行内存闪存等相关参数?都买TP了,还在乎硬件配置么?能用就好我用过的tp虽然硬件不出彩,但稳定性是最好的,没有用坏的,不过它每个型号的版本越靠后缩水越严重曾经的TPLINK几乎霸占了家庭路由的领域,走家鸿蒙3。0来了?华为开发者大会时间已定,这次稳了要说今年的华为高光时刻在哪里,肯定不是刚刚发布的旗舰P50系列,毕竟P50只是一个产品,并没有太多具有革命性的意义。个人觉得,还是当属于在今年六月份举办的鸿蒙发布会了,而在发布会上