第9章 位操作.pptVIP

  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文档。上传文档
查看更多
* * * * * 第9章 位操作 教学目的:掌握六种位运算符和位段的使用 重点:掌握六种位运算符 难点:移位运算符和位段 * 第9章 位操作 9.1 位运算符 9.2 位段 9.1.1 按位与运算 按位与运算符“”是双目运算符。 其功能是参与运算的两数各对应的二进位相与。 只有对应的两个二进位均为1时,结果位才为1,否则为0。即00=0;01=0;10=0;11=1。 参与运算的数以补码方式出现。 (9的二进制补码) (5的二进制补码) (1的二进制补码) 9.1.2 按位或运算 按位或运算符“ | ” 是双目运算符。 其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为 1时,结果位就为1。 即0|0=0;0|1=1;1|0=1;1|1=1。 参与运算的两个数均以补码出现。 (9的二进制补码) | (5的二进制补码) (13的二进制补码) 9.1.3 按位异或运算 按位异或运算符 “ ^ ” 是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1,当两对应的二进位相同时,结果为0。 即0^0=0;0^1=1;1^0=1;1^1=0。参与运算数仍以补码出现。 9^5可写成算式如下: (9的二进制补码) ^(5的二进制补码) (12的二进制补码) 9.1.4 求反运算 求反运算符~为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。即~0=1;~1=0。 例如~9的运算为: ~ 0000000000001001 11111111111110110 ~运算符的优先级比算术运算符、关系运算符、逻辑运算符和其它运算符都高 9.1.5 左移运算 左移运算符“ ” 是双目运算符。 其功能把 “ ” 左边的运算数的各二进位全部左移若干位,由 “ ” 右边的数指定移动的位数,高位丢弃,低位补 0。 例如: a4 指把 a的各二进位向左移动4位。如a十进制3),左移4位后十进制48)。 9.1.6 右移运算 右移运算符 “ ” 是双目运算符。 其功能是把 “ ” 左边的运算数的各二进位全部右移若干位, “ ” 右边的数指定移动的位数。 例如: a2 设 a=15,表示把 000001111右移十进制3)。 9.2 位段 所谓“位段”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。 每个域有一个域名,允许在程序中按域名进行操作。 位段定义与结构定义相仿,其形式为: struct 位段结构名 { 位段列表 }; 其中位段列表的形式为: 类型说明符 位段名:位段长度 #include stdio.h main() { struct bf { unsigned a:1; unsigned b:3; unsigned c:4; } bit,*pbit; bit.a=1; bit.b=7; bit.c=15; printf(%d,%d,%d\n,bit.a,bit.b,bit.c); pbit=bit; pbit-a=0; pbit-b=3; pbit-c|=1; printf(%d,%d,%d\n,pbit-a,pbit-b,pbit-c); } 【实例9-2】位段的应用。 程序运行结果如图 位段变量的说明与结构变量说明的方式相同。可采用先定义后说明,同时定义说明或者直接说明这三种方式。 例如: struct bf2 { int a:8; int b:2; int c:6; }data; 说明:data为bf2变量,共占两个字节。其中位段a占8位,位段b占2位,位段c占6位。 对于位段的定义和引用,有以下几点说明: (1)位段成员的类型必须指定为unsigned或int类型。 (2)一个位段必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位段时,应从下一单元起存放该位段。也可以有意使某位段从下一单元开始。 (3)由于位段不允许跨两个字节,因

文档评论(0)

精品报告 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档