C语言程序设计 丁峻岭 等 第十一章新.pptVIP

C语言程序设计 丁峻岭 等 第十一章新.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章 位运算 11.1 位运算与位运算符 11.2 位运算应用举例 11.3 位段 课后练习 我们知道,计算机真正执行的是由0和1信号组成的机器指令,数据也是以二进制表示的。因此最终要实现计算机的操作,就是要对这些0和1信号进行操作。每一个0和1的状态称为一个“位”(bit)的状态。C语言中这种对字节和位的操作就称为位操作或位运算。 对整型或字符型数据来说,C语言具有直接操作其字节或位的能力。C语言同汇编语言相比,虽然位操作运算没有后者那么丰富,但它可以实现大部分常用的位运算,比如按位取反、数据的左移或右移,等等,这对程序的编制还是相当灵活和方便的。 11.1 位运算与位运算符 C语言所提供的位操作运算符如表11-1所示。 这些位运算符可以与赋值运算符相结合,成为位运算赋值操作。如表11-2所示。 11.1.1 按位与运算符 运算符“”要求有两个运算量(如ab),作用是将a和b中各个位分别对应进行与运算,即二者都为1时结果为1,否则为0。按规则具体有: 00==0 01==0 10==0 11==1 【例11.1】对于两个char类型的八进制数(255和313)进行按位“与”运算后,则运算情况为: a= 1 0 1 0 1 1 0 1 (八进制255) b= 1 1 0 0 1 0 1 1 (八进制313) ───────────────── 结果= 1 0 0 0 1 0 0 1 (八进制211) 程序如下: main() { unsigned char x=0255,y=0311; printf(xy=%o\n,xy); } 运行情况如下: xy=211 【例11.2】测试输入数据的第3位是否为1(位号是从右向左数,起始位为第0位)。如果为1则输出8,否则输出0。 程序如下: main() { unsigned short x=8,y; scanf(“%hd”,y); printf(“%d”,xy); } 下面是几次运行情况: ① 8(回车) ② 24(回车) ③ 40(回车) 8 8 8 程序的设计思路是,将一个十进制数8与y进行 运算,如果结果为8,则第3位必然为1,否则结果是0。 在进行位运算时,用十进制数表示很难直接看出每一个二进位的状态。有鉴于此,人们在进行位运算时常常用八进制数或十六进制数。 【例11.3】编写程序测试输入数据的任何一位是否为1。 由上例改写后的程序如下: main() { unsigned short x,y; scanf(%hx,x); scanf(%hx,y); printf(%02x,xy); } 运行情况如下: ①(如果要测数据的第4位是否为1) ②(如果要测数据的第5位是否为1) 10(回车) 20(回车) 12(回车) 23(回车) 10 20 x和y都是从键盘输入的十六进制数,其中x是用来测试y的某一位是否为1的数。第一个输入值为十六进数10,即二进目的是测试第二个输入数据y的第4位是否为1,由于y的值为十六进制12,即二进所以xy的值为十六进数10,与x相同,则说明y的第4位为1。第二次运行的值为二进制目的是测第5位是否为1,输入的数相当二进制数001000011,第5位为1,xy结果为十六进数20,与x相同,则说明y的第5位为1。 由上可知,如果xy的运算结果与x相同,则说明x中为1的位,y中相应的位也为1。上面我们用的只有1位为1,实际上可以推广到测试若干位是否为1。例如,测试y的低4位是否为1,此时可以使x的值为十六进制的0f,如果xy的结果为0f,则说明y的低4位为1。 用这个方法不仅可以测试一个数的某几位是否为1,还可以用来取一个数中的某几位。例如,取数据y的低4位,用0xfy运算即可;取该数据的低5位,则用0x1fy即可。例如,y为十六进制的25,其运算为: x= 1 0 1 0 1 1 0 1

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档