程序设计第9章 位运算.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 位运算是C语言区别于其它高级语言的重要特性之一,具有低级语言的功能,广泛应用于对底层硬件,外围设备的状态检测和控制,因此常用于系统软件的开发中。同时在实际应用中,常常也有一些数据对象的情况比较简单,只需要一个或几个二进制位(Bit)就能够编码表示,例如可以使用一个位(Bit)就可明确表示:开或关、男或女,真或假等具有两个状态的值。利用C语言提供的位运算功能,不仅可以弥补传统编程技术、方法的不足,还可以有效地简化与优化程序,大大提高程序运行的效率。 第9章 位运算 9.1 位运算与位运算符 9.2 位域 C程序设计实例教程 第九章 位运算 9.1 位运算与位运算符 在计算机中一个字节由8个二进制位(D0-D7)组成,一个二进制位可以有0和1两种状态,如下图所示。 D7 D6 D5 D4 D3 D2 D1 D0 位(Bit) 0 1 0 1 1 0 1 0 字节(Byte) C语言提供的位运算符 除按位取反“~”运算符外,其余的都是二目运算符,即有两个操作数。在C语言中,位运算符所操作的对象必须是整型数(长整型、整型和短整型)或字符,不能对实数执行位运算。 C程序设计实例教程 第九章 位运算 位运算符 功 能 举例说明 优先级 设ab 结果 ~ 按位取反 ~a 2 左移 a 2 5 右移 a 2 5 按位“与”运算 a b 8 ^ 按位“异或”运算 a^b 9 | 按位“或”运算 a|b 10 9.1.1 按位“与”运算 使用“&”作为按位“与”运算的运算符。它对参加运算的两个操作数按对应位进行“与”运算。二进制位“与”运算的规则如右表所示。 只有两个相应二进制位都是1,则该位的运算结果是1;否则就为0。 C程序设计实例教程 第九章 位运算 b1 b2 b1b2 0 0 0 0 1 0 1 0 0 1 1 1 注意:“&”既是位运算符,也是取变量地址的运算符,它们的区别是位运算符“&”是二目运算符,前后都有操作数,如56&89;而取变量地址的运算符“&”是一目运算符,只能后面跟一个变量名,如&a(a是一个已定义的变量名)。 例如,设int a=1228, b=596,计算a&b的值。 分析:假设一个int型数据占用2个字节(用16位表示,以下同)。int类型是有符号的整数类型,故实际存放数据时使用的是补码。这里1228和596都是正整数,所以其补码就等于原码。 0000010011001100 (1228) & 0000001001010100 (596) ---------------------------------------------------------------- 0000000001000100 (68) C程序设计实例教程 第九章 位运算 按位“与”运算有以下用途: 1. 将某些位置0。如要将奇数位二进制位置0,其它位保持不变,则可以: XXXXXXXXXXXXXXXX (X是0或1) & 1010101010101010 (奇数位二进制位置0) -------------------------------- X0X0X0X0X0X0X0X0 (奇数位二进制位置0,其它位不变) 2. 取指定位。如要取一个整数m的高8位和低8位,则: 取高8位 取低8位 XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX & 1111111100000000 0000000011111111 --------------------- ------------------ XXXXXXX (得高8位)XXXXXXX (得低8位) C程序设计实例教程 第九章 位运算 例9-1 编写一个函数,实现将一数字字符串(如“27896”)转化为一个对应的整数。 1) 字符串中的每个数字在内存中存放的是该字符的ASCⅡ,最后以“\0”结束。 2) 从内存数据中可以看出,只要将每个字节的高4位置0并保留其低4位,就可取出相应的数字,如第1个字节高4位置0低4位不变的话就得这就是数字2。 3) 先置结果num=0,从字符串的起始地址开始依次循环取出每个数字字符,对其进行第2步所示的位运算,

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档