欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPS文档下载
     

    第9讲位运算枚举类型定义与编译预处理.pps

    • 资源ID:2259880       资源大小:1.38MB        全文页数:26页
    • 资源格式: PPS        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第9讲位运算枚举类型定义与编译预处理.pps

    Page 1,第九讲 位运算 枚举 类型定义 编译预处理,参考书C程序设计 第八章、第十一章、第十章:§10.9、§10.10,Page 2,本讲主要内容,信息表示与存储 位运算 位字段结构体 枚举类型 类型定义 编译预处理,信息的表示与存储 二进制的编码表示,问题的提出: 负数的表示方法 0的表示方法 解决方案之一:原码 符号绝对值表示 +0101011的原码:00101011 -0101011的原码:10101011 问题:0的表示不唯一 +0:00000000,-0:10000000,信息的表示与存储 二进制的编码表示,解决方案之二:补码 求补码的方法 正数:同原码 负数: 求反,产生中间码反码 (符号位不变,其他位求反) 末位加1 补码的运算规则 符号位直接参加运算,最高位进位自然丢失?(将减法转换成了加法),信息的表示与存储 定点数与浮点数,定点数 小数点固定在某一位置上 机器数的浮点表示 由阶符、阶码、尾符、尾数组成,Page 6,位运算按位与(&),运算规则 将两个运算量的每一个位进行逻辑与操作。 举例:计算 3 ,Page 7,位运算按位或(|),运算规则 将两个运算量的每一个位进行逻辑或操作。 举例:计算 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;,Page 8,位运算按位异或(),运算规则 两个操作数进行异或:若对应位相同,则结果该位为 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,Page 9,位运算取反(),单目运算符:对一个二进制数按位取反。 例1:025:0000000000010101 025:1111111111101010 例2:将 int 型数据 a 最低位置 0: a=a&1 (1是:11.10) (当a是16位或32位整数时都适用),例 1,例 2,Page 10,例1 按位取反,main() unsigned char a,b; a=0x9a; b=a; printf(“a:%xnb:%xn“,a,b); ,运行结果: a: 9a b: 65,Page 11,例2 位逻辑运算,#include main() unsigned char a,b; a=0xb9; b=0x83; printf(“a AND b:%xn“,a ,运行结果: a AND b:81 a OR b:bb a NOR b:3a,Page 12,位运算移位,左移运算() 右移后,低位舍弃, 高位:无符号数补0 有符号数补0(逻辑右移) 补“符号位”(算术右移),例 3,例 4,例5,Page 13,例3 移位-左移,main() unsigned char a,b; a=0x1b; b=a2; printf(“0x%x Lift shift 2 bit:0x%xn“,a,b); ,运行结果: 0x1b Lift shift 2 bit:0x6c,Page 14,例4 移位-右移,main() char a=-8; unsigned char b=248; printf(“signed a Right_shift 2 bit:%dn“,a2); printf(“unsigned b Right_shift 2 bit:%dn“, b2); ,运行结果: signed a Right_shift 2 bit:-2 unsigned b Right_shift 2 bit:62,Page 15,例5,题目: 用十位二进制形式输出一个无符号整数。 分析 屏蔽字最高位1,其余位为0。 Value不断左移,逐个与屏蔽字按位“与”,结果非0时最高位为1,否则为0,逐位输出。,Page 16,例5,#include main() unsigned x; void displaybits(unsigned); printf(“Enter an unsigned integer:“); scanf(“%u“, /*调用子函数,逐位输出二进制位*/ ,Page 17,例5,void displaybits(unsigned value) unsigned i, displaymask=115; printf(“%7u= “,value); for(i=1;i=16;i+) value ,输入:250 输出:250= 00000000 11111010,Page 18,位字段结构体,概念 特殊形式的结构体,成员项是二进制位字段。 几点说明: P266267,Page 19,枚举类型,将需要的变量值一一列举出来,构成一个枚举类型。 enmu 枚举类型名 变量值列表; 例如: enum weekday sun,mon,tue,wed,thu,fri,sat; 说明: P247 应用举例 P248 例10.12,Page 20,类型定义,给类型定义一个新的名字 typedef 已定义过的类型名 新类型名; 例:,struct person char name20; char address100; char tel20; typedef struct person PERSON;,或: typedef struct person char name20; char address100; char tel20; PERSON;,Page 21,编译预处理文件包括,#include 编译系统按系统设定的标准目录搜索包括文件。 #include “包括文件路径名“ 编译系统按指定路径搜索。 未指定路径名时,首先在当前目录中搜索, 找不到时,再按系统设定的标准目录搜索包括文件。,Page 22,编译预处理宏定义,定义符号常量 定义带参数的宏 例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,Page 23,例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;,Page 24,例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); ,Page 25,例6 宏定义的使用,运行结果: a1=1 a1=1 a1=1 a2=2 a3=3 a4=4 r1=1.500000 r2=2.500000 r3=3.500000 r4=4.500000 i=10 j=100 n=X m=Y,Page 26,作业,复习 C程序设计 第八章、第十一章、第十章:§10.9、§10.10 P267 11.1, 11.3 预习 C程序设计 第十二章,

    注意事项

    本文(第9讲位运算枚举类型定义与编译预处理.pps)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开