




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
教学内容: 14.1 位逻辑运算 14.2 位移位运算 14.3 复合位运算 14.4 位段 教学要求: 1.掌握按位与运算、按位或运算、按位异或运 算、取反运算、左移运算、右移运算的运算规则。 2.掌握位段的应用。 第14章 位 运 算 为了节省内存空间,在系统软件中常将多个标志状 态简单地组合在一起,存储到一个字节(或字)中。 语言 提供了实现将标志状态从标志字节中分离出来的位 运算功能。 C 既具有高级语言的特点,又具有低级语言的功能 ,位运算能力就是其特色之一。 位运算就是指进行二进制位的运算。C提供的位运算 有: 名称 运算符 名称 运算符 按位与 x=25; y=568; printf(“x unsigned int y=0; printf(“25 :%dn”, 25); printf(“x :%dn”, x ); printf(“y(1) :%dn”, y); printf(“y(2) :%un”, y); 运行结果: 25 : 26 x : 24 y(1) : 1 y(2) : 65535 例14.2 编程输出按位取反运算的值。程序如下: 14.2 位 移 位 运 算 1.按位左移运算 (1)按位左移运算符: main() unsigned a; a=7 (2)按位右移运算格式: 操作数移位数值 (3)按位右移运算规则:将一个操作数先转换成二进制数 ,然后将二进制数各位右移若干位,移出的低位舍弃;并在 高位补位,补位分2种情况: 若为无符号数,右移时左边高位移入0。 若为有符号数,如果原来符号位为0(正数),则左边 补若干0 ;如果原来符号位为1 ,左边补若干0的称为“逻 辑右移” ,左边补若干1的称为“算术右移”。如: a: 1001011111101101 (113755)8 逻辑右移 a1:0100101111110110 得045766 算术右移 a1:1100101111110110 得145766 (4) 按位右移运算主要用途 按位右移运算主要用途是对操作数做除法运算,即 将一个操作数除以 2n 的幂运算处理为右移 n 位的按 位右移运算。右移一位相当于除以2 ,右移 n 位相 当于除以2n。 例14.4 从键盘上输入1个正整数给int变量n , 输出由811位构成的数(从低位、0号开始编号)。 基本思路: (1)使变量n右移8位,将811位移到低4位上 (2)构造1个低4位为1、其余各位为0的整数。 (3)与n 进行按位与运算。 (4)输出与运算结果。 程序如下: main() int n , mask; printf(“Input a integer number: “); scanf(“%d“, /*右移8位,将811位移到低4位上*/ n= 8; /*间接构造1个低4位为1、其余各位为0的整数*/ mask = ( 0 (7 4 + 1 ) a4 设置一个低4位全为1,其余全为0 的数。即: ( 0 4;/ b=a(m-n+1) / c = (0= 2. 复合位赋值运算规则 复合位赋值运算规则与复合算术赋值运算规则相同。 运算符 表达式 等价表达式 位段类型成员的数据类型只能是: int 、unsigned int (3) 位段类型变量的定义 先定义位段类型,再定义位段类型变量。 struct 位段类型名 类型说明符 成员名1: 长度; 类型说明符 成员名2: 长度; ; struct 位段类型名 变量名表列; 定义位段类型同时定义位段类型变量。 struct 位段类型名 类型说明符 成员名1: 长度; 类型说明符 成员名2: 长度; 变量名表列; 例如,CPU的状态寄存器,按位段类型定义如下: struct status unsigned sign: 1; /*符号标志*/ unsigned zero: 1; /*零标志*/ unsigned carry: 1; /*进位标志*/ unsigned parity: 1; /*奇偶/溢出标志*/ unsigned half_carry: 1; /*半进位标志*/ unsigned negative: 1; /*减标志*/ flags; 显然,对CPU的状态寄存器而言,使用位段类型(仅 需1个字节),比使用结构类型(需要6个字节)节省了5 个字节。 2.说明 (1)因为位段类型是一种结构类型,所以位段类 型和位段变量的定义,以及对位段(即位段类型中的成 员)的引用,均与结构类型和结构变量一样。 (2)对位段赋值时,要注意取置范围。一般地说 ,长度为n的位段,其取值范围是:0(2n-1)。 (3)使用长度为0的无名位段,可使其后续位段从 下1个字节开始存储。 例如, struct status unsigned sign: 1; /*符号标志*/ unsigned zero: 1; /*零标志*/ unsigned carry: 1; /*进位标志*/ unsigned : 0; /*长度为0的无名位段 */ unsigned parity: 1; /*奇偶/溢出标志*/ unsigned half_carry: 1; /*半进位标志*/ unsigned negative: 1; /*减标志*/ flags; 原本6个标志位是连续存储在1个字节中的。由于加入 了1个长度为0的无名位段,所以其后的3个位段,从下1 个字节开始存储,一共占用2个字节。 (4)1个位段必须存储在1个存储单元(通常为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025自考专业(公共关系)练习题附答案详解(模拟题)
- 2024-2025学年火电电力职业鉴定考前冲刺练习题含答案详解(预热题)
- 2024反射疗法师大赛理论常考点试卷带答案详解(综合卷)
- 2024职称计算机预测复习附答案详解【黄金题型】
- 2025年高校教师资格证之《高等教育法规》题库综合试卷附答案详解(轻巧夺冠)
- 2025自考专业(护理)预测复习含完整答案详解【历年真题】
- 2025安全员考试常考点试卷【考试直接用】附答案详解
- 2025计算机一级题库试题及答案详解【有一套】
- 2024-2025学年火电电力职业鉴定考试黑钻押题含完整答案详解【名校卷】
- 2025年自考专业(国贸)模拟题库附完整答案详解(易错题)
- 2025年有限空间作业安全知识问答试题集
- 国家教育考试保密安全培训
- 电器特种作业培训课件
- 2025新高考数学核心母题400道(教师版)
- 卫星网络管理与运维-深度研究
- 房地产质量管理制度
- 2024医疗设备融资租赁法规解读
- 2020-2024年五年高考政治真题分类汇编专题19 世界多极化(原卷版)
- 胃食管反流-讲稿
- 2024至2030年中国扇数据监测研究报告
- 2024-2030年中国化工新材料行业需求趋势及发展可行性分析报告
评论
0/150
提交评论