网站大量收购闲置独家精品文档,联系QQ:2885784924

第7章位运算试卷.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 位运算 学习目标 1位运算和位运算符 2位段 位运算 所谓位运算,是指对一个数据的某些二进制位进行的运算。每个二进制位只能存放1位二进制数“0”或者“1”。通常把组成一个数据的最右边的二进制位称做第0位,从右到左依次称为第1位,第2位……最左边一位称做最高位 C语言提供6种位运算符 按位与 ~取反 |按位或 左移 ^按位异或 右移 问题7.1 1.使用~运算符进行按位取反 按位取反运算为单目运算,它将运算对象的各位取反。即将1变0,0变1,例如~024是对八进制数24(即二进制按位求反。 ~ 0 0 0 1 0 1 0 0 1 1 1 0 1 0 1 1 即八进制数353 2.使用进行按位与 设int iNum1=3,iNum2=5; iNum1iNum2并不等于8,应该是按位与。 因为iNum1iNum2是整型变量,占两个字节,对应的二进制形式分别为0000000000000011和0000000000000101,所以 iNum1 = 0000000000000011 iNum2 = 0000000000000101 —————————— iNum1 iNum2 = 0000000000000001 因此,35的值等于1。 3.使用|进行按位或 按位或运算是指两个运算对象按对应二进制位进行“逻辑或”运算,即:当参加运算的两个对象的对应二进制位有一个为“1”时,结果的对应二进制位为“1”,如下所示: 0|0 = 0; 0|1 = 1; 1|0 = 1; 1|1 = 1; 设int iNum1=3,iNum2=-5, 则iNum1|iNum2的结果如下: iNum1= 000000000000011 | 1111111111111011 —————————— 1111111111111011 按位或运算常用于对一个数据中的某些位置1。 4.使用^进行按位异或 按位异或运算是指两个运算对象按对应二进制位进行“逻辑异或”运算,即当参加运算的两个对象的相应二进制位一个为“0”,另一个为“1”时,结果的对应二进制位为1,如下所示: 0^0 = 0; 0^1 = 1; 1^0 = 1; 1^1 = 0; 设int iNum1=3,iNum2=5,则iNum1^iNum2的结果如下: iNum1 = 0000000000000011 iNum2 = 0000000000000101 —————————— iNum1^iNum2 = 0000000000000110 5.使用进行左移 左移运算符“”的使用方式为: 运算对象左移位数 左移运算符将运算对象的每个二进制位同时向左移动指定的位数,从左边移出的高位部分被丢弃,空出的低位部分补0。 6.使用进行右移 右移运算符“”的使用方法为: 运算对象右移位数 右移运算符将运算对象的每个二进制位同时向右移动指定的位数,从右边移出的低位部分被丢弃。对无符号数,左边空出的高位补0;对有符号数,正数的高位部分补0,负数高位部分补0还是1跟计算机系统有关。移入0的称为“逻辑右移”,移入1的称为“算术右移”。 “逻辑右移”相当于无符号数除以2,“算术右移” 相当于有符号数除以2。 设 iNum: 1001011111101101 iNum1: 0100101111110110 -----逻辑右移 iNum1: 1100101111110110 -----算术右移 问题7.2: 在微机学习小组,十五个同学的代号分别是‘A’、‘B’、‘C’… …‘O’,小组同学每次参加学习讨论都要进行身份验证,组长根据十五个同学代号的ASCII码的特点(‘A’、‘B’、‘C’… …‘O’的ASCII码以十六进制表示分别是41,42,43… …4F),要求编制程序将每个代号的低四位清零,然后输出结果,如果都是40,则说明是本组成员。怎么实现呢? 问题7.3: 有位同学在编写游戏中需要在程序中判断玩家的键盘操作情况,现在请你编写一个小程序帮他测试键盘扫描码,以便知道按下的是哪一个键。提示:利用bioskey函数,测试键盘扫描码,按ESC键退出。 流程图 问题7.4: 扩展问题7.3,将键盘测试功能编成函数int fnPressKey(void),在主函数中调用函数,实现根据用户是否按了上、下、左、右键分别显示up,down,left和right。 7.2 位段:学一学 (1) 位段结构类型定义 位段是一种构造类型,类型定义的方法为: struct 类型名 { 基类型 位段名1:位段1占用位数; 基类

文档评论(0)

502992 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档