第十二章 位运算.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文档。上传文档
查看更多
第十二章 位运算.ppt

第十二章 位运算、位段 12.1 位运算符和位运算 1. “按位与”运算符() 2. “按位或”运算符(|) 12.2 位段 ⑵说明 ⑶对位段结构体的操作 12.3 带参数的宏定义 12.4 条件编译 举例:通过条件编译选择求最大值或最小值 12.5 命令行参数 举例:回显命令行参数。 * 第十二章 位运算,位段 Wudaixian 主讲人:吴代贤 C语言提供的位运算符 右移 按位异或 ^ 左移 按位或 | 取反 ~ 按位与 含义 运算符 含义 运算符 注意:运算量只能是整形或字符型的数据,而不能为实型数据 。 参加运算的两个数据,按二进位进行“与”运算。如果两个 相应的二进位都位1,则该位的结果值为1,否则为0。即 例如:35的按位与运算为: 3 =5 =00000001 00=0 ; 01=0 ; 10=0 ; 11=1 () 参加运算的两个数据,按二进位进行“或”运算。如果两个 相应的二进位都位0,则该位的结果值为0,否则为1。即 例如:48|15的按位或运算为: 48 =15 =00111111 0|0=0 ; 0|1=1 ; 1|0=1 ; 1|1=1 (|) 在C语言中,允许在结构体中以位为单位来指定其成员所占内 存的长度,这种以位为单位的成员称为“位段”或“位域”。 ⑴位段结构体的定义 Struct 结构体类型名 { … 位段类型 位段名:位段长度; … }位段变量名; 其中:位段类型名只能为整型(int)和无符号整型 (unsigned int) Struct packed-data { unsigned int f1:2; unsigned int f2:2; unsigned int f3:4; unsigned int f4:3; } control; 例如 ① 结构体中各个位段的长度之和可以不恰好占满1个字节。例如: Struct packed-A { unsigned int f1:3; unsigned int f2:3; unsigned int f3:4; }x; 12 0 3 6 0 15 15 7 ② 在位段结构体的定义中,可以包含非位段成员。如: Struct packed-B { unsigned int f1:4; unsigned int f2:2; unsigned int f3:5; int n; }x; 0 0 15 15 f1 f2 f3 n ③一个位段必须存储在同一存储单元中,不能跨两个单元。如 果第一存储单元的空间不能容纳下一个位段,则该空间不用,而从 下一个单元开始存放该位段。 ④可以定义无名位段,无名位段起分隔的作用,无名位段的空 间不能引用。例如: ⑤若无名位段的长度为0,则长度为0的无名位段的下一个位 段必须从下一个存储单元开始存放。 Struct packed-A { unsigned int f1:2; unsigned int :3; unsigned int f3:4; }x; ⑥位段的最大长度不能大于存储单元的长度,也不能定义位 段数组。 ①结构体中各位段的引用方法与结构体变量相同。 ②可以对结构体中的各位段赋值,但应注意该位段允许存放的最大值的范围。 ③位段可以在数字表达式中引用。 ④位段的值可以用整型格式或字符的形式输出。 格式: #define 宏名(参数表) 含参数的字符串 #define S( a , b ) a*b … area=S( 4 , 3 ); 替换过程: ①将实际参数替换宏定义的参数。 ②替换字符串中的参数。 ③替换整个宏。 4*3 带参的宏与函数的区别: 带参宏不分配内存单元,不返回值,只是在编译时按规则替换。 关于带参宏的说明: ①要严格按格式书写,否则会造成错误。 #define S (a,b) a*b S(3,4)被替换成: (a,b) a*b(3,4) ②参数有可能用到表达式时,参数字符要加()。 #define S(r) PI*r*r S(a+b)替换为:PI*a+b*a+b #define S(r) PI*(r)*(r) S(a+b)替换为:PI*(a+b)*(a+b) C 语言可以通过条件控制,让编译系统编译不同的程序段,从 而提高程序的移植性并方便调试。 条件编译有三种形式: #ifdef 标识符 pr

文档评论(0)

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

1亿VIP精品文档

相关文档