C语言程序设计教程 姜恒远 30276第10章_第1页
C语言程序设计教程 姜恒远 30276第10章_第2页
C语言程序设计教程 姜恒远 30276第10章_第3页
C语言程序设计教程 姜恒远 30276第10章_第4页
C语言程序设计教程 姜恒远 30276第10章_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章位运算,1,第10章位运算,位运算是指对二进制形式的整型数据的各位逐位进行逻辑运算的操作。位运算的重要性中断字的某个中断位置0或置1表示与设置设备的状态表示与设置文件的属性。位运算是C语言区别于许多其他计算机高级程序设计语言的显著特性之一。C语言中对二进位的操作的两个途径位运算符位字段,2,主要内容,10.1位运算符10.2位段,10.1位运算符,10.1.1位逻辑运算符10.1.2移位运算符10.1.3位运算应用实例,10.1位运算符,);returnb;,10.2位段,10.2.1位段结构10.2.2位段结构应用实例,10.2.1位段结构,一个位段是一个机器字中的若干连续的二进位。C允许定义位段结构,即以位段为单位定义结构类型中的诸成员(member)。struct位段结构名数据类型1位段名1:位段长度1;数据类型2位段名2:位段长度2;数据类型n位段名n:位段长度n;,10.2.1位段结构,“位段结构名”规定了位段结构的名字。与一般的结构定义类似,也允许定义无名位段结构。“数据类型i”用来指出其后的“位段名i”中存放何种类型的数据,它们只能为int、unsignedint、signedint、char、和_bool类型。“位段名i”规定了位段i的名字。注意,其后的冒号(:)不能漏写。“位段名i”可以缺省(为空),但其后的冒号不能省略,这样的位段称之为无名位段。,10.2.1位段结构,“位段长度i”就是相应的“位段名i”所占用的二进位位数。在无名位段情况下,如果“位段长度i”为n,若n0,表示从当前位置开始的n个二进制位不用(无定义);若n=0,则表示下一个位段要从下一个新字的开始安排(即0长度的无名位段将导致跳过当前字中剩余的位)。位段结构的各个位段在机器字中的安排方向随计算机的不同而不同,有些计算机是从机器字的右边往左安排,而有些计算机则是从左往右安排。,10.2.1位段结构,structunsignedintbf1:3;unsignedint:2;unsignedintbf2:2;unsignedint:0;unsignedintbf3:5;strubf;,10.2.1位段结构,(1)一个位段必须完全包含在一个机器字中,不能跨机器字存放。若当前的机器字中剩下未分配的二进位数少于下一个位段的长度,则剩下的这些二进位不用,而把下一个位段安排到下一个机器字中去。structexmunsignedbw1:6;signedbw2:3;intbw3:5;unsignedbw4:7;,对位段结构的说明,10.2.1位段结构,(2)在定义一个位段结构时,若其中定义的位段名被指定为int或signed数据类型,那么,其位段长度必须大于1,因为存放在这样的位段中的数据必须使用一位符号位。(3)一旦定义了一个位段结构数据类型,便可定义该数据类型的变量,然后便能存取该结构变量中的位段成员。,对位段结构的说明,10.2.1位段结构,(4)位段结构变量中的每一个位段成员都可以像普通变量一样参于各种表达式运算,也可以向它赋值。structexmfbus,*p=fbus.bw1=2;p-bw2=3;fbus.bw3=fbus.bw1+p-bw2if(fbus.bw3=0intarray5:3;不允许,structexmsignedbw1:3;intarray:5;fbus5;允许,10.2.1位段结构,(7)C允许在结构或位段结构中混合定义普通成员与位段成员。structmixcharname20;unsignedyear:12;unsignedmonth:4;unsignedday:5;unsignedsex:1;person;,对位段结构的说明,10.2.1位段结构,(8)不同机器以及编译系统位段结构变量的存储单元分配机制不同,通常以unsignedint变量的存储长度为基本分配单位。(9)声明位段结构类型变量时,也可以指定其初始化值。,对位段结构的说明,10.2.2位段结构应用实例,例10.2一个记录、检查、修改、并输出微机系统中的设备配置情况的模拟程序。假定某微机系统接入设备情况用16位二进位来记录,其各位定义见下图。其中,1表示“有”、0表示“无”、RAM大小以64MB为单位、Cache大小以256KB为单位、设备从0到9编号。,10.2.2位段结构应用实例,位段结构定义如下:typedefstructunsignedusb:1;unsignedmodem:1;unsignedsoundadapter:1;unsignedprinters:2;unsigneddisks:2;unsignedramsize

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论