C语言程序设计实用教程 魏海新 李燕 第11章新.pptVIP

C语言程序设计实用教程 魏海新 李燕 第11章新.ppt

  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文档。上传文档
查看更多
第11章 位运算 教学提示 C语言的运算符除了前面介绍的算术运算符、关系运算符、赋值运算符、逻辑运算符、条件运算符等运算符以外,还有位运算符。本章将介绍位运算、位段结构的定义和使用。 教学目标 掌握位运算及其运算规则,熟悉位运算符的应用,掌握位段结构的定义,了解位段结构的使用。 11.1 概述 C语言既具有高级语言的特点,又具有低级语言的特点。因而具有广泛的用途和很强的生命力。本章介绍的位运算和指针运算一样,适合于编写系统软件的需要。在系统软件中,常需要处理二进制位的问题。C语言提供了位运算的功能,因此与其他高级语言相比,具有很大的优越性。 所谓位运算是指进行二进制位的运算。例如,将一个存储单元中的所有二进制位全置为1,两个数按位相加等。 11.1.1 字节和位 字节(byte)是计算机中存储信息最常用的基本单位。计算机内存储器中,每一个字节都有一个地址,称为内存地址。 一个字节包含8个二进位(bit),其中最右边的一位称为“最低有效位”或“最低位”,最左边的一位称为“最高有效位”或“最高位”,每一个二进位的值是0或1。 11.1.2 原码、反码和补码 1、原码 最高位做符号位(0代表正,1代表负),其余各位代表数值本身的绝对值。 例如: 2、反码 一个数如果为正,则它的反码与原码相同; 一个数如果为负,则它的反码的符号位为1,其余各位是对原码取反。 3、补码 原码和补码都不便于计算机内的计算,因为在运算中要单独处理其符号,很不方便。因此,最好能做到将符号位和其他位统一处理,对减法也按加法处理,这就是“补码”。 关于补码的规定: 正数其原码、反码、补码相同; 负数的补码为在其反码的最低位加1。 例如,求-6的补码, -6的原码: 00000110 -6的反码: 11111001 + 1 -6的补码: 11111010 用补码进行算术运算,减法可以用加法实现。 例如: 7-6可以将+7的补码和-6的补码相加,可得到结果值 的补码值: +7的补码为: 00000111 -6的补码为: 11111010 相加得: 100000001 舍去进位,后面1600000001就是1的补 码。 11.2 位运算符 C语言提供的位运算符及基含义见下表。 11.2.1 按位与运算符“” 按位与运算规则:运算符两边都为1,运算结果为1,否则都为0。即: 11=1 10=0 01=0 00=0 11.2.2 按位或运算符“|” 按位或运算规则:两个相应位中只要有一个为1,按位或结果值为1,只有两个相应位都为0时,结果才为0。即: 1|1=1 1|0=1 0|1=1 0|0=0 11.2.3 按位异或运算符“^” 按位异或运算规则:参加运算的两相相应位相同,运算结果为0,不同则为1。即: 1^1=1 1^0=1 0^1=1 0^0=0 11.2.4 按位取反运算符“~” 例如,要将八进制数25按位求反。可先求 出其补码00010101 取反得11101010? 11.2.5 左移运算符“” 左移运算用来将一个数的各二进位左移若干位,右侧补0。 11.2.5 右移运算符“” 右移运算用来将一个数的各二进位右移若干位,移到右端的低位被舍弃,对无符号位,高位补0。 11.2.6 位运算举例 例11.5 循环移位。要求将a进行右循环移位,即将a中原来左面的(16-n)位右移n位,原来右端n位移到最左边n位,假设用两个字节存放一个整数。 #include stdio.h main() { unsigned a,b,c; int n; scanf(a=%o,n=%d,a,n); b=a(16-n); c=an; c=c|b; printf(a=%o,c=%o,a,c); } 11.3 位段 对内存中信息的存取一般以字

您可能关注的文档

文档评论(0)

118压缩包课件库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档