- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
莆田学院现代教育技术中心 2004年5月 第八章 位运算 本章主要内容 C语言既是一种高级语言,广泛应用于应用软件的开发和程序设计,同时又是一种低级语言,可以用于系统软件的开发和程序设计,如自动控制系统中的过程控制、参数检测、数据通讯等控制程序,都可以综合利用C语言中的指针操作、位运算和位段技术来实现。 本章介绍位运算的基本形式和常用运算符,并简要介绍位段的概念。位运算的深入学习,应该在《计算机原理》和《汇编语言程序设计》课程中进行。 一、位运算符和位运算 位运算概述 所谓“位运算”,是指按二进制位进行运算。 位运算的特点:运算按二进制逐位进行——没有借位和进位。 位运算量:整型(int,short,unsiged,long)/字符型(以补码/ASCII码形式存储),不可为实型。 位运算符:P298 表12.1 | ^ ~ 一、位运算符和位运算 位运算符还可与赋值运算符相结合,进行位运算赋值操作。如: a=b 等价于 a=ab a=b 等价于 a=ab 注意:位运算时的数据类型为char/int,分析时要化为二进制形式,但在程序中书写及输出结果时仍为char/int。 位运算符的使用 按位与 (均为1时方为1) 位运算符的使用 按位或 | (均为0时方为0) 位运算符的使用 按位异或 ^ (二者相异方为1) 位运算符的使用 按位取反 ~ (各位反转) 位运算符的使用 左移运算 an 将a中各位向左移n位,右端补0,高位溢出丢弃。 例: a= an (可写为a=n),相当于a×2n(高位未溢出时) 位运算符的使用 左移运算 位运算符的使用 右移运算 an 将a中各位右移n位,溢出则舍弃。 左端—— a为正数时(符号位为0),填0; a为负数时(符号位为1),填0或填1与系统有关 填0(逻辑右移) 填1(算术右移) TC使用算术右移 位运算符的使用 右移运算 应用示例 ① 从整数a最右端第m个位置开始取该位开始右面n位 。 算法如下: b=a(m-n+1) c=~(~0n) d=bc 注:位自右向左从0开始编号 应用示例 ② 将一个整数a循环右移n位。 算法如下: b=a(16-n) c=an c=c|b 二、位段 C语言允许在一个结构体中以位为单位来指定其成员所占内存长度。这种以位为单位的成员称为“位段”。 示例 高级语言程序设计 【例一】 main( ) { unsigned char a,b; printf(“Enter a and b:”); scanf(“%o,%o”,a,b); printf(“ab=%o\n”,ab); } 计算 010 000 (a) 011 000 (b) 010 000 001 010 (a) 010 000 (b) 000 000 Enter a and b: 20,30 ab=20 Enter a and b: 12,20 ab=0 【例二】 main( ) { unsigned char a,b; printf(“Enter a and b:”); scanf(“%o,%o”,a,b); printf(“a | b=%o\n”,a|b); } Enter a and b: 20,30 a | b=30 Enter a and b: 12,20 a | b=32 计算 010 000 (a) | 011 000 (b) 011 000 001 010 (a) | 010 000 (b) 011 010 【例三】以下程序的功能是将a数据的低4位取反。 #include stdio.h main() { unsigned char a=0x39, b= ; a=a^b; printf(%x\n, a); } 答案:0x0f 计算 (a) ^ (b) 【例四】 main( ) { char a=3; int b=10; printf(“~a=%d,~b=
文档评论(0)