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

C语言程序设计 任正云 ch8新.PPT

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 计算机网络体系结构 C语言程序设计 主编 任正云 中国水利水电出版社 * 第8章 位运算 位运算是体现C语言具有低级语言功能的重要特点之一。 计算机中存储和运算都是以二进制方式进行的,而位运算正是提供了对二进制进行操作的手段,因此合理地使用位运算可使程序的执行效率得到提高。 8.1 位运算符 6个位运算符: 位运算符仅作用于非浮点类型。 按位与 左移 | 按位或 ∧ 按位异或 ~ 取反 右移 字位逻辑运算符 字位移运算符 8.1 位运算符 1.字位逻辑运算符 特点: 它只对相关的两个二进制位进行运算,不产生进位。 字位逻辑运算符的操作对象是0或1; 运算的结果也是0或1。 8.1 位运算符 (1)按位与运算符。 其功能为: 即只有在两个运算对象全1的时候,结果才为1,其余的情况下结果均为0。 按位与运算符是双目运算,其两个运算对象均是二进制位,结果也是二进制位。 00=0,01=0,10=0,11=1。 8.1 位运算符 (2)按位或运算符| 其功能是: 即两个运算对象中只要有一个为1,结果就为1。 按位或运算符|也是一个双目运算符,其运算的对象也为两个二进制位,结果也是二进制位。 0|0=0,0|1=1,1|0=1,1|1=1。 8.1 位运算符 (3)按位取反运算符~ 即对原来的位置值进行翻转。 (4)按位异或运算符∧。 即当两个运算对象的值相反的时候结果为1,相同的时候结果为0。 按位取反运算符是一个单目运算符,其功能是:~0=1,~1=0。 按位异或运算符∧是一个双目运算符,其功能是:0∧0=0,0∧1=1,1∧0=1,1∧1=0。 8.1 位运算符 【例8.1】设a=(9)10=(1001)2 ,b=(10)10=(1010)2,求ab、a|b及a∧b。 1010 1001 ab 1000 1101 | 1001 a|b 1011 1010 ∧ 1001 a∧b 0011 8.1 位运算符 注意: ①位运算和逻辑运算符的区别。 ②任何一个数和它自身的异或永远是0,而任何一个数和0的异或的结果是其自身。 和,|和||,虽然它们的真值表是相同的,但和|是对两个数按二进制位进行操作,其结果是一个数,而逻辑运算符和||是把两个数作为整体进行操作的,其结果是一个逻辑值。 8.1 位运算符 按位异或运算有个有趣的特性: 其中∧(a,b)=(a∧b),因此上式也就是 (a∧b)∧b======a∧(b∧b)=a∧0=a 结合律 对一个数据用另一个数据进行两次异或操作后,将恢复这个对象原来的值。 ∧(∧(a,b),b)=a 8.1 位运算符 例如,设a=1001,b=1010,则 (c) 0011 (b) 1010 ∧ (a) 1001 (a) 1001 (b) 1010 ∧ (c) 0011 前一个操作称为加密过程,将a和b进行异或运算,结果为c;后一个操作称为解密过程,即将加密后的c的值再用b进行异或运算,结果又恢复为a。 8.1 位运算符 利用这个特性,可以在不需要第三变量的情况下将两个变量进行交换,这时只需要进行三次异或操作即可: a=a0∧b0; (1) b=a∧b0; (2) a=a∧b0; (3) 8.1 位运算符 由(2)式推导: 由(3)式推导: a=a∧b======(a0∧b0)∧b======(a0∧b0)∧a0=====(a0∧a0) ∧b0=0∧b0=b0 (1)式 (4)式 结合 即b的终值为a的初值a0,a的终值为b的初值b0,a0和a,b0和b都用同一个内存单元,只是表示不同时间内的不同值而已。 (1)式 b=a∧b0======(a0∧b0)∧b0=a0∧(b0∧b0)=a0∧0=a0 (4) 8.1 位运算符 按位逻辑运算主要用在以下几个方面: 1)按位与运算用于选取一个数的某些二进制位。 掩码取所需要的位数,且全部置1 两种情况: 一是只取一个数的某几位,其他位都不要; 二是只保留一个数中某几位的原始值,其他位全是0。 (1)掩码和原来的数一样长,只在需要保留的位上置1,其余全置0。 (2)掩码确定之后,再与原数进行适当的按位与运算,即可得到所需的结果。 8.1 位运算符 在一个16位的系统,前8位和后8位全为1时表示的数的情况为: (111

您可能关注的文档

文档评论(0)

精品课件 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档