C语言程序设计-提高篇-第4章位运算

C语言程序设计-提高篇-第4章位运算

ID:45063785

大小:233.50 KB

页数:39页

时间:2019-11-09

C语言程序设计-提高篇-第4章位运算_第1页
C语言程序设计-提高篇-第4章位运算_第2页
C语言程序设计-提高篇-第4章位运算_第3页
C语言程序设计-提高篇-第4章位运算_第4页
C语言程序设计-提高篇-第4章位运算_第5页
资源描述:

《C语言程序设计-提高篇-第4章位运算》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言程序设计—提高篇第4章位运算内容概述位运算操作位段的概念教学目标字节和位的有关概念;正确使用常见的位运算符和位运算操作;牢记位段的要领及位段的使用方法。C语言既是一种高级语言,广泛应用于应用软件的开发和程序设计,同时又是一种低级语言,可以用于系统软件的开发和程序设计,如自动控制系统中的过程控制、参数检测、数据通讯等控制程序,都可以综合利用C语言中的指针操作、位运算和位段技术来实现。本章介绍位运算的基本形式和常用运算符,并简要介绍位段的概念。位运算的深入学习,应该在《计算机原理》和《汇编语言程序设计》课程中进行。位运算概述所谓“位运算”,是指按二进制位进行运算。位运算的

2、特点:运算按二进制逐位进行——没有借位和进位。位运算量:整型(int,short,unsiged,long)/字符型(以补码/ASCII码形式存储),不可为实型。4.1位运算符和位运算位运算符(BitwiseOperators)运算符名称举例优先级~按位取反~flag(高)(算术运算符)<<左移a<<2>>右移b>>3(关系运算符)&按位与flag&0x37^按位异或flag^0xC4

3、按位或flag

4、0x5A(低)(赋值运算符)位运算符还可与赋值运算符相结合,进行位运算赋值操作。如:a&=b等价于a=a&ba>>=b等价于a=a>>b位运算时的数据类型为char/int,

5、分析时要化为二进制形式,但在程序中书写及输出结果时仍为char/int。负数以补码形式参与运算注意与逻辑运算区别按位与(BitwiseAND)运算规则0&0=0;0&1=0;1&0=0;1&1=1;用法按位清零保留某些指定位位运算符的使用例1#includevoidmain(){inta,b;printf("Enteraandb:");scanf("%d,%d",&a,&b);printf("a&b=%d",a&b);}计算010000(a)&011111(b)010000001010(a)&010000(b)000000Enteraandb:16,3

6、1a&b=16Enteraandb:10,16a&b=0按位或(BitwiseInclusiveOR)运算规则0

7、0=0;0

8、1=1;1

9、0=1;1

10、1=1;用法按位定值为1例2#includevoidmain(){unsignedchara,b;printf("Enteraandb:");scanf("%o,%o",&a,&b);printf("a

11、b=%o",a

12、b);}Enteraandb:20,30a

13、b=30Enteraandb:12,20a

14、b=32计算010000(a)

15、011000(b)011000001010(a)

16、010000(b)

17、011010按位异或(BitwiseExclusiveOR,XOR)运算规则0^0=0;0^1=1;1^0=1;1^1=0;说明相“异”则为1,相“同”则为0例3以下程序的功能是将a数据的低4位取反。#includevoidmain(){unsignedchara=0x39,b=;a=a^b;printf("%x",a);}答案:0x0f计算00111001(a)^00001111(b)00110110与0相异或,保持原值不变与自身相异或,则全部位清零交换两个整数值a=a^b;b=b^a;a=a^b;交换两个整数值不用临时变量#include

18、o.h>voidmain(){inta=3,b=4;a=a^b;b=b^a;a=a^b;printf(“a=%db=%d",a,b);}结果:a=4b=3按位取反(One'sComplement)运算规则~0=1;~1=0;用法所有位翻转获得适用于不同系统的位运算模板例4#includevoidmain(){inta=32767;intb=~a;printf("a=%d,b=%d",a,b);}结果:a=32767,b=-32768计算a:原码:0111111111111111b:补码:1000000000000000左移(LeftShift)运算

19、规则i<voidmain(){unsignedinta=15,b;b=a<<2;printf("%d,%d",a,b);}例6以下程序的运行结果是。#includevoidmain(){inta=12,b;b=0x1f5&a<<3;printf("%d,%d",a,b);}结果:12,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。