




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计 清华大学 郑莉 安颖莲 第九讲讲 位运算 枚举举 类类型定义义 编译预处编译预处 理 参考书C程序设计 第八章、第十一章、第十章:10.9、10.10 1 C语言程序设计 清华大学 郑莉 安颖莲 本讲讲主要内容 信息表示与存储储 位运算 位字段结结构体 枚举类举类 型 类类型定义义 编译预处编译预处 理 2 C语言程序设计 清华大学 郑莉 安颖莲 信息的表示与存储储 二进进制的编码编码 表示 问题的提出: -负数的表示方法 -0的表示方法 解决方案之一:原码 -符号绝对值表示 -+0101011的原码:00101011 -0101011的原码:10101011 -问题:0的表示不唯一 +0:00000000,-0:10000000 C语言程序设计 清华大学 郑莉 安颖莲 信息的表示与存储储 二进进制的编码编码 表示 解决方案之二:补码 -求补码的方法 正数:同原码 负数: 求反,产生中间码反码 (符号位不变,其他位求反) 末位加1 -补码的运算规则 符号位直接参加运算,最高位进位自然丢失 ?(将减法转换成了加法) C语言程序设计 清华大学 郑莉 安颖莲 信息的表示与存储储 定点数与浮点数 定点数 -小数点固定在某一位置上 机器数的浮点表示 -由阶符、阶码、尾符、尾数组成 C语言程序设计 清华大学 郑莉 安颖莲 位运算按位与( -取指定位。 例如:有 char c; int a; 取出 a 的低字节,置于 c 中:c = a 6 C语言程序设计 清华大学 郑莉 安颖莲 位运算按位或(| ) 运算规则 -将两个运算量的每一个位进行逻辑或操作。 举例:计算 3 | 5 先将 3 和 5 表示为补码,再按位或: 3: 0 0 0 0 0 0 1 1 5:(|) 0 0 0 0 0 1 0 1 3 | 5: 0 0 0 0 0 1 1 1 用途: -将某些位置1,其它位不变。 例如:将 int 型变量 a 的低字节置 1 : a = a | 0xff; 7 C语言程序设计 清华大学 郑莉 安颖莲 位运算按位异或( ) 运算规则 -两个操作数进行异或:若对应位相同,则结果该位为 0, 若对应位不同,则结果该位为 1。 举例:计算 071052 071: 0 0 1 1 1 0 0 1 052:() 0 0 1 0 1 0 1 0 071052 : 0 0 0 1 0 0 1 1 用途: -使特定位翻转(与0异或保持原值,与1异或取反)。 例如:要使 01111010 低四位翻转: 0 1 1 1 1 0 1 0 () 0 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1 8 C语言程序设计 清华大学 郑莉 安颖莲 位运算取反() 单目运算符:对一个二进制数 按位取反。 例1:025:0000000000010101 025:1111111111101010 例2:将 int 型数据 a 最低位置 0: a=a a=0x9a; b=a; printf(“a:%xnb:%xn“,a,b) ; 运行结果: a: 9a b: 65 10 C语言程序设计 清华大学 郑莉 安颖莲 例2 位逻辑逻辑 运算 #include main() unsigned char a,b; a=0xb9; b=0x83; printf(“a AND b:%xn“,a printf(“a OR b:%xn“,a|b); printf(“a NOR b:%xn“,ab); 运行结果: a AND b:81 a OR b:bb a NOR b:3a 11 C语言程序设计 清华大学 郑莉 安颖莲 位运算移位 左移运算() 右移后,低位舍弃, 高位:无符号数补0 有符号数补0(逻辑右移) 补“符号位”(算术右 移) 例 3 例 4 例5 12 C语言程序设计 清华大学 郑莉 安颖莲 例3 移位-左移 main() unsigned char a,b; a=0x1b; b=a2); printf(“unsigned b Right_shift 2 bit:%dn“, b2); 运行结果: signed a Right_shift 2 bit:-2 unsigned b Right_shift 2 bit:62 14 C语言程序设计 清华大学 郑莉 安颖莲 例5 题目: 用十位二进制形式输出一个无符号整数。 分析 -屏蔽字最高位1,其余位为0。 -Value不断左移,逐个与屏蔽字按位“与”, 结果非0时最高位为1,否则为0,逐位输出。 15 C语言程序设计 清华大学 郑莉 安颖莲 例5 #include main() unsigned x; void displaybits(unsigned); printf(“Enter an unsigned integer:“); scanf(“%u“, displaybits(x); /*调用子函数,逐位输出二进制位*/ 16 C语言程序设计 清华大学 郑莉 安颖莲 例5 void displaybits(unsigned value) unsigned i, displaymask=1 编译系统按系统设定的标准目录搜索包括文件。 #include “包括文件路径名“ 编译系统按指定路径搜索。 未指定路径名时,首先在当前目录中搜索, 找不到时,再按系统设定的标准目录搜索包括文件。 21 C语言程序设计 清华大学 郑莉 安颖莲 编译预处编译预处 理宏定义义 定义符号常量 定义带参数的宏 例1:#define POWER(X) (X)*(X) 在程序中使用时: z=POWER(x+y); 编译时替换为: z=(x+y)*(x+y); 例2:#define POWER(X) X*X 在程序中使用时: z=POWER(x+y); 编译时替换为:z=x+y*x+y;(运算顺序不 对) 说明 -宏只是表达式的运算,不象函数调用需要进行控制转移。 -其数据类型随实参不同而不同。形参及结果无固定类型。 -不存在参数传递,具有较高的执行速度,但占内存较多。 例 6 22 C语言程序设计 清华大学 郑莉 安颖莲 例6 宏定义义的使用 #define NL printf(“n“) #define PRINT(F,V) printf(#V#“=%“#F“t“,V) #define PRINT1(F,X1) PRINT(F,X1);NL #define PRINT2(F,X1,X2) PRINT(F,X1);PRINT(F,X2);NL main() int a1,a2,a3,a4; float r1,r2,r3,r4; long i,j; char n,m; 23 C语言程序设计 清华大学 郑莉 安颖莲 例6 宏定义义的使用 a1=1; a2=2; a3=3; a4=4; r1=1.5; r2=2.5; r3=3.5; r4=4.5; i=10; j=100; n=X; m=Y; PRINT(d,a1); PRINT1(d,a1); PRINT2(d,a1,a2); PRINT2(d,a3,a4); PRINT2(f,r1,r2); PRINT2(f,r3,r4); PRINT2(ld,i,j); PRINT2(c,n,m); 24 C语言程序设计 清华大学 郑莉 安颖莲 例6 宏定义义的使用 运行结果: a1=1a1=1 a1=1a2=2 a3=3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数字领域新质生产力
- 2025年心电图学科基础知识综合考核答案及解析
- 2025年针灸推拿疼痛症状的定位及治疗考核答案及解析
- 2025年眼科常见眼部疾病护理实务答案及解析
- 2025年精神科疾病诊断与治疗模拟试卷答案及解析
- 辽宁因地制宜发展新质生产力
- 2025年皮肤科疑难病例诊断与治疗模拟试卷答案及解析
- 2025年风湿免疫科慢性疾病综合治疗方案设计模拟测试卷答案及解析
- 2025年麻醉科常用麻醉药物知识综合考核答案及解析
- 校园安全必修课讲解
- 教科版五年级科学上册全册同步课时练习【含答案全册】
- GB/T 18884.2-2015家用厨房设备第2部分:通用技术要求
- 癫痫性精神障碍及护理
- 《大学生当铺策划书》课件
- 环境学概论课课件
- 药包材生产质量管理手册
- IInterlib区域图书馆集群管理系统-用户手册
- 社会组织管理概论全套ppt课件(完整版)
- 轧机设备安装施工方案
- (完整版)IATF16949新版过程乌龟图的编制与详解课件
- 制药企业仓库温湿度分布的验证
评论
0/150
提交评论