- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C_C++程序设计基础作者李凤云第12章位运算课案.ppt
位运算规则: 例12.1 若 a=(15)10=2, b=(80)10=10 则: ab = 0000 0000, a|b = 0101 1111, a^b , ~a = 1111 0000 位运算的应用: 1)按位与运算经常用于将某些二进制位屏蔽掉。 例12.2 编写函数:使一个整数k中的低4位置0。 分析:用“与”运算实现:将k的低4位与0相与,其他位与1相与,即将 k与十六进制的 1110 相与。程序如下: unsigned int_set(unsigned int k) { k=k 0x1110 ; return(k); } 结论:任何二进制位与0相与能实现置0,与1相与该位保持不变。 2)按位或运算经常用与将某些二进制位 置 1。 例12.4:将一个字节的高4位置为1010并输出结果。 分析:直接用位运算符,可以很方便的置1、清0、翻转等,但无法直接实现置给定的值。可以用两步实现:首先将高4位清 0,然后与1010 0000相或。程序如下: /*设 a 为待处理的数据,转换成二进制b用来保存将a的高4位清0后的结果*/ main() { unsigned char a,b,c; a=8; b=a0x0f; c=b|0xa0; /*c用于保存最终结果*/ printf("%x",c); } 运行结果3)按位异或运算经常用与将某些位翻转。 例12.5 编程实现,将一整数n的高8位翻转,低8位不变 分析:用“异或”运算实现,即高8位与1相异或,低8位与0相异或,也就是k与十六进制的ff00相异或。程序如下: main() { int n=129; printf("\n before reset,n=%x",n); n=n∧0xff00; printf("\n after reset,n=%x",n); } 运行结果: before reset,n10000001 after reset,n10000001 结论:任何二进制位与0异或,保持不变;与1异或,对应位翻转。 变量data 的存储结构如图 : a b c i …… 成员名 2 6 4 4 16 …… 长度 3.位段的引用 位段是结构体类型的某个成员,因此,位段的引用同结构体成员的引用方法相同。 如:data.a=0x01; /*给位段a赋值, */ data.b=0x0a; /*给位段b赋值*/ data.i=12; /*给位段 i赋值*/ printf(“%02x, %02x, %4d”, data.a , data.b ,data.i ); 输出: 01, 0a, 12 特别提示:使用位段时,要注意该位段的能表示的数据的范围。 4.位段的应用 编程模拟一个温度测控系统:从键盘输入模拟温度的采样值(0~255),该采样值与0.2相乘,得出实际温度值,根据该温度值,控制温度指示灯的亮与灭(从0度开始,温度每增加10度则多点亮一个指示灯);将该温度值与设定温度比较,当温度小于10度和高于40度时分别开启升温设备和降温设备,同时报警。反复以上过程,直至输入的测温值为300为止。 分析:系统中需要控制的设备有:五个温度指示灯,升温设备,降温设备,报警设备。因此可用如下的结构体变量word表示该系统的控制字,其成员构成如下: (1)无符号整型tem1 用来存放输入的温度采样值(0~255),若每个刻度代表0.2度,则可以测量的温度范围为0~51度。浮点类型的成员tem2用来存放tem1成员转换成的温度值。 (2)四个位段存放(要输出的)控制数据。其中,位段lmp 宽度为5,控制五个温度指示灯,值为1时灯亮,为0时灯不亮。其余的3个位段sw1、sw2、alm宽度均为1,分别控制升温设备、降温设备和报警设备,都是为“1”时开启,为0时关闭。 函数sample()实现测温采样:通过键盘输入模拟测温数据,并转换成实际温度值。 函数 control()实现输出控制:通过屏幕显示和喇叭鸣笛的方
您可能关注的文档
- Authorware多媒体制作案例教程-管学理-第九章课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第10章提高多媒体作品开发效率课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第11章作品的调试与发布课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第12章xtra技术与控件的应用课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第13章使用知识对象课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第14章数据库应用课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第1章认识多媒体与Authorware7.0课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第2章文本处理课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第3章图形、图像处理课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第4章声音处理课案.ppt
- C_C++程序设计基础作者李凤云第13章文件课案.ppt
- C_C++程序设计基础作者李凤云第14章C++对C的扩充课案.ppt
- C_C++程序设计基础作者李凤云第15章C++面向对象基础课案.ppt
- C_C++程序设计基础作者李凤云第1章程序设计基础课案.ppt
- C_C++程序设计基础作者李凤云第2章C语言概述课案.ppt
- C_C++程序设计基础作者李凤云第3章数据类型课案.ppt
- C_C++程序设计基础作者李凤云第4章顺序结构程序设计课案.ppt
- C_C++程序设计基础作者李凤云第5章选择结构课案.ppt
- C_C++程序设计基础作者李凤云第6章循环结构课案.ppt
- C_C++程序设计基础作者李凤云第7章数组课案.ppt
文档评论(0)