C语言程序设计方案第十二部分位运算教学课件.pptVIP

C语言程序设计方案第十二部分位运算教学课件.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言程序设计 第十二章 位运算 主要内容 12.1 位运算的概念 12.2 位运算 12.3 位运算举例 12.4 位段 12.1 位运算的概念 C语言是为描述系统而设计的,既具有高级语言的特点,又具有低级语言的功能,因而具有广泛的用途和很强的生命力。 在计算机用于检测和控制等诸多领域中要用到位运算的知识,因此读者应当学习和掌握本章的内容。 所谓位运算是指进行二进制位运算。例如,将一个存储单元中的各二进位左移或右移一位,两个数按位相加等。本章讲述C语言位运算的功能。 12.1 位运算的概念 计算机内数据的表示方法 计算机内存储器由许多称为字节的单元组成的,每个字节由8个二进制位(8bit)构成,每位的取值为0或1。最右端的位称为“最低位”,编号为0;最左端的位称为“最高位”,而且按从最低位到最高位顺序,依次编号。下图是一个字节数据和它各二进制位的编号。 计算机中数是用二进制来表示的,数的符号也是用二进制表示的。一般用最高位作为符号位,0表示正数,用1表示负数。 12.1 位运算的概念 补码 正数表示形式:符号位为0,其余部分表示数的绝对值。例如,+9的补码12.1 位运算的概念 负数表示形式: -9的绝对值按位取反后加1,符号位以1表示负数。由于计算机的字长不同,为方便描述,因此约定用一个字节表示一个整数。见下图: 12.1 位运算的概念 位运算及其运算符 所谓位运算是指,按二进制位进行的运算,即从具有0或1的运算对象出发,计算得出具有0或1的运算结果。C语言的位运算又分为按位操作和移位操作,位操作包括按位与、或、异或和求反运算;移位操作包括左移和右移操作 12.1 位运算的概念 说明 位运算的优先级:由高到低的顺序是:~ → 、 → → | → ^; 位运算的运算对象只能是整型(int)或字符型(char)的数据; 位运算是对运算量的每一个二进制位分别进行; 12.2 位运算 按位与运算() 参加运算的两个数据,按二进位进行“与”运算。如果两个相应的二进位都为1,则该位的结果值为1,否则为0。即 00=0;01=0;10=0;11=1; 例如: 35 并不等于8,应该是按位与。 3 = 0 0 0 0 0 0 1 1 5 = 0 0 0 0 0 1 0 1 1 = 0 0 0 0 0 0 0 1 因此,35的值得1。如果参加运算的是负数(如-3 -5),则以补码形式表示为二进制数,然后按位进行“与”运算。 12.2 位运算 按位与的实际用途 将一个数的某位清零 如果想将某个数的某个比特清零,只要另找一个数,让对应的该比特置0,然后使两数进行按位与运算,即可达到将此数的特定比特清零的目的。 如:有数想让该数从右数的第4比特变成0,其他位保持不变。我们另找一个数,该数从右数的第4比特设它为0,其他位全为1将两个数进行运算: 0 0 1 0 1 0 1 1 1 1 1 1 0 1 1 1 0 0 1 0 0 0 1 1 12.2 位运算 取一个数中某些指定位 如有一个两个字节整数 a=(16a1)16,想取出其中的低字节。我们构造一个数b,它的高字节全为0,低字节全为1,即b=(00ff)16=(255)10,只需将a与b按位与即可: a = (16a1)16 = (0001011010100001)2 b = (00ff )16 = (0000000011111111)2 (00a1)16 = (0000000010100001)2 12.2 位运算 按位或运算(|) 两个相应的二进位中只要有一个为1,该位的结果值为1。即0|0=0;   0|1=1; 1|0=1; 1|1=1。 例如: (060)8 | (017)8 , 将八进制数60与八进制数17进行按位或运算: (060)8 = (0 0 1 1 0 0 0 0)2 | (017)8 = (0 0 0 0 1 1 1 1)2  (077)8 = (0 0 1 1 1 1 1 1)2 按位或常用来对一个数据的某些位定值为1。如:a是

文档评论(0)

118books + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档