C语言程序的设计演示课件位运算.ppt

C语言程序的设计演示课件位运算.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序的设计演示课件位运算

位运算;本章重点;请写出47的二进制形式 ;整数的二进制表示;位与字节;位运算符;按位与的用途;例:有一数据b,想测试其第4位是否为1? 分析: 1.位号是从右向左数的 2. 设置一个只有第4位为1的二进制数a与b进行与运 算,如果结果则第4位为1;反之结果则第4位为0。;2、按位或(|) ;3、异或(^) ;(3)与-1异或,相当于将各位取反(因为-1的每个位都为1)。 (-1) (4)特定位翻转。将需要翻转的位与1异或即可。 ^ ;(5)交换两个值,不用临时变量。 例:a=3,b=4,将a和b的值互换,可以用以下赋值语句实现: a=a^b;b=b^a;a=a^b; a=011 ^ b=100 a=111 ^ b=100 b=011 ^ a=111 a=100 最后,a=100 (4) b=011 (3) 实现了交换;;4、取反(~) ;5、左移运算符() ;6、右移运算符() ;检查一下你所用的计算机系统的C编译系统执行的是逻辑右移还是算术右移: 程序代码: #includestdio.h void main( ) { int a=~0,b; b=a1; if(b==a)printf(“算术右移!\n”); else printf(“逻辑右移!\n”); } 若b仍为~0,则表明采用的是算术右移,反之为逻辑右移。;位运算符功能总结 ;位运算综合运用举例 ;设置一个最低四位均为1而其余位为0的数与之进行按位与运算,能够保留最低四位 0: 0000….00000 ~0: 1111…..11111 ~04: 1111…..10000 为什么不直接右移? ~(~04):0000…...01111 将(a4)跟(~(~04))进行与运算,便可保留4~7位;例12.2:右循环移位 ;例12.2:右循环移位 ;例12.2:右循环移位 ;例12.2:右循环移位 ;对于无符号整数,总长度N(8 16 32),则可以归纳为: 循环右移n: (an) |(a(N-n)) 循环左移n: (an) |(a(N-n)) ;用二进制位存储信息: 将动词“看见”的这六种语法属性存入一个字节,则表示如下: 这个字节的值就是2+16+32=50。 ;位 段 ;结构中可以同时定义位段和其他??段。例如,重新定义动词属性结构如下: struct VerbAttr{ unsigned short Bu_ : 1 ; unsigned short Mei_ : 1 ; unsigned short Hen_ : 1 ; unsigned short _Zhe : 1 ; unsigned short _Le : 1 ; unsigned short _Guo : 1 ; char verb [9] ; } v; 该结构的理论长度为1*2+1*9=11个字节,但为了对齐,垫补了一个字节,这时v的长度是12个字节。 ;对位段中的数据引用的方法同样可以用成员运算符“.”和指向成员运算符“-”,如 v.Bu_ = 1 ; p-Hen_ = 0; 对位段进行赋值时需要注意其允许的最大值范围,如对结构 struct { unsigned short a:2; unsigned short b:3; unsigned short c:4; int i; }data; 写赋值语句 data.a=8 后,位段a 的值为多少?;关于位段的说明 ;关于位段的说明;关于位段的说明;总结: ;思考与练习

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档