第02章数据类型运算符和表达式.pptVIP

  1. 1、本文档共82页,可阅读全部内容。
  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文档。上传文档
查看更多
第02章数据类型运算符和表达式.ppt

2.10.1位运算符及其功能 1.“按位与”运算符() 运算是双目运算,其基本规则是将参加运算的两个数据,按二进制位进行“按位与”运算。 即:0=0 01=0 10=0 11=1 例如: int a1=0x19,a2=0x35,b; b=a1a2; 注意:如果参加运算的是负数(如-3-5),则要以补码形式表示为二进制数,然后再按位进行“与”运算。 2.10 位运算 按位与有一些特殊的用途: (1) 清零。 若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合以下条件:原来的数中为1的位,新数中相应位为0。然后使二者进行&运算,即可达到清零目的。  2.10 位运算 (2) 取一个数中某些指定位。 如有一个整数a(2个字节),想要取其中的低字节,只需将a与8个1按位与即可。 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0 a b c 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 2.10 位运算 2 “按位或”运算符(|) | 运算是双目运算,其基本规则是将参加运算的两个数据,按二进制位进行“按位或”运算。 即 0|0=0,0|1=1,1|0=1,1|1=1 例如: int a1=0x19,a2=0x35,b; b=a1|a2; 2.10 位运算 “按位或” 运算一个的用途示对一个数据的某些位定值为1 3.“按位异或”运算符(∧) ∧运算的功能是将参加运算的两个数据,按位异或运算,也称XOR运算符。即: 0∧0=0 0∧1=1 1∧0=1 1∧1=0 2.10 位运算 例如: int a1=0x19,a2=0x35,b; b=a1∧a2; 则其运算的情况如下:  例如:有0110 0110,想使其低4位翻转,即1变为0,0变为1。可以将它与0000 111l进行∧运算,即 0110 0110∧0000 111l = 0110 1001。 ∧运算符应用: (1)使特定位翻转 与0相∧,保留原值 0110 0110 ∧ 0000 1111 0110 1001 2.10 位运算 (2)交换两个值,不用临时变量。 例如 :将a和b两个整数的值互换,可以利用如下语句实现: int a=0xff00, b=0x88aa; a=a∧b; b=b∧a; a=a∧b; 自己演算一下! 4.“按位取反”运算符(~) ~是一个单目运算符,用来对一个二进制数按位取反,即将0变l,将1变0。 即: 0=1 ~1=0 例如: (~) 0000000000000101 (5)  1111111111111010 (八进制数177752)(-6) 2.10 位运算 5.左移运算符() 是双目运算,其功能式将一个数的各个二进制位全部左移若干位。其左边是需要移位的对象,右边是一个整型表达式,代表要左移的位数 。移位时右端补0,左端移出的位弃舍。 例如: int a=128,b; b= a2; 2.10 位运算 注意:在实际应用中,左移比乘法运算快得多,有些C编译程序自动将乘2的运算用左移乘2n的幂运算处理为左移n位。 例如: 左移1位相当于该数乘以2,左移2位相当于该数乘以22=4,15<<2=60,即乘了4。但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。 假设以一个字节(8位)存一个整数,若a为无符号整型变量,则a=64时,左移一位时溢出的是0,而左移2位时,溢出的高位中包含1。 2.10 位运算 6.右移运算符() 是双目运算,其功能式将一个数的各个二进制位全部右移若干位。运算符左边是需要移位的对象,右边是一个整型表达式,代表要右移的位数 。 移位时右端移出的位弃舍。对于unsigned数和正数左端补0,对于负数左端补1。  注意:右移一位相当于除以2 右移n位相当于除以2n。 2.10 位运算 例如: int a1=9, a2=-8,b1,b2; b1= a12; b2= a22; 2.10 位运算 在右移时,需要注意符号位问题: 有的系统移入0,有的系统移入1。移入0的称为“逻辑右移”,即简单右移;移入1的称为“算术右移”。 Turbo C++3.0和其他一些C编译采用的是算术右移,即对有符号数右移时,如果符号位原来为1,左面移入高位补1。 例如: 2.10

文档评论(0)

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

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

1亿VIP精品文档

相关文档