十一章位运算语言.pptxVIP

  1. 1、本文档共21页,可阅读全部内容。
  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文档。上传文档
查看更多

1第十一章位运算

2概述01111111127011111101260111110112500000001100000000011111111-111111110-210000001-12710000000-128............

3位运算符一、按位与有0出0,全1出145000001010000,01004作用:1)清零与0按位与2)取一个数的某些位取低字节,x0x0ff取高字节,x0xff000124073010101000011101100010000020

4二、按位或|有1出1,全0出0060|017001111110011,1111077作用:1)置1与1按位或2)使某些位置1,其余位保持原样置低字节,x|0x0ff置高字节,x|0xff000124|0730101010000111011011111110177

5三、按位异或^相同出0,相异出1作用:1)与1相异,状态翻转2)与0相异,状态不变a^a00^001^010^111^103)交换两个值,不用中间变量0124^0730101010000111011011011110157a=3;b=4a=a^bb=b^a=b^a^b=b^b^a=0^a=aa=a^b=a^b^a=a^a^b=0^b=ba==4;b==3

6四、取反~是单目运算符,对一个二进制数按位取反。~012~000001010365在位运算符中优先级最高。求补码:-7的补码~7+01~x+01

7五、左移运算符将一个数的二进制位全部左移若干位。a=7;a=a200001100a为034高位左移后溢出不用,低位补0。左移一位相当于乘2,*2n相当于左移n位。

8五、右移运算符将一个数的二进制位全部右移若干位。a=7;a=a200000001a为01低位右移后舍弃。高位:1)对无符号数,高位补02)对有符号数,正数补0,负数补1。优先级:~^|

9位运算符和赋值符可以组成复合运算符。a=ba=aba=2a=a2不同长度的数据进行计算:以长的数为准,右端对齐,无符号数,左端补0有符号数,左端补1

10取一个整数a从右端开始的4~7位。1)先使a右移4位。150a42)再构造一个低4位为1的数00000,0000,0000,0000~01111,1111,1111,1111~041111,1111,1111,0000~(~04)0000,0000,0000,1111a(7-4+1)3)将上面二式进行运算a4~(~04)可以任意指定从右面第m位开始取其右面n位:b(m-n+1)~(~0n)

11main(){unsigneda,b,c,d;scanf(“%o”,a);b=a4;c=~(~04);d=bc;printf(“%o,%o\n”,a,d);}

12循环移位。要求将a进行右循环移位。右移main(){unsigneda,b,c;intn;scanf(“%o,%d”,a,n);b=a(16-n);c=an;c=c|b;printf(“%o%o\n”,a,c);}n位左移,低位补0右移,高位补0

13以下的程序运行结果是:main(){unsigneda,b;a=0x9a;b=~a;printf(“a:%x\nb:%x\n”,a,b);}0000000010011010a:9ab:f14intx=1;printf(“%d\n”,~x);-2若x=0123,则表达式(5+(int)(x)(~2))的值是:000000000101001100000000000001010000000001011000111111111111110100000000010110000x58

15位段为了节省内存,可以在一个字节放几个信息,如逻辑变量等,取变量的一位或几位为一个单位,来表示独立的信息,这种表示方式称为位段。位段用结构体的形式来表示structpacked_data{unsigneda:2;unsigned

文档评论(0)

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

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

1亿VIP精品文档

相关文档