第12章 位运算.ppt

第12章 位运算.ppt

ID:48702792

大小:204.50 KB

页数:16页

时间:2020-01-19

第12章 位运算.ppt_第1页
第12章 位运算.ppt_第2页
第12章 位运算.ppt_第3页
第12章 位运算.ppt_第4页
第12章 位运算.ppt_第5页
资源描述:

《第12章 位运算.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第12章位运算本章要点位运算符和位的逻辑运算位的复合运算位段的概念与运用本章难点对位段的理解12.1二进制位运算概述1.位(bit):是指二进制中的位,它是计算机能 处理的最小单位。2.字节(byte):是计算机处理的基本单位。计算 机的内存是按字节进行分配的。一个字 节有八位二进制数组成。所以我们在C语 言中数据类型都是以字节为基本单元。3.补码:一个正数的补码是其本身;一个负数的 补码是其绝对值按位取反后加1。计算 机是以补码的形式存放数的。例如:-7的补码是111111111111100112.2位的运算符一、位运算的概念位运算:以二进制位为单位的运算。二、位运算

2、符“位运算”仅限于整数(整型数和字符型)。位逻辑运算符(~、&、^、

3、)位移位运算符(<<、>>)位复合赋值运算符(&=、

4、=、^=、<<=、>>=)运算符含义优先级~按位求反1(高)<<左移2>>右移2(同级)&按位与3^按位与或4︱按位或5扩展运算符表达式等价的表达式<<=a<<=2a=a<<2>>=b>>=nb=b>>n&=a&=ba=a&b^=a^=ba=a^b︱=a︱=ba=a︱b表12.1位运算符及其功能12.2扩展运算符及其含义1.位逻辑运算符~(按位求反)、&(按位与)、^(按位异或)、

5、(按位或)运算规则:~1=0~0=10&0=00&1=01&0=0

6、1&1=10^0=00^1=11^0=11^1=00

7、0=00

8、1=11

9、0=11

10、1=1例如:main(){unsignedchara,b;a=0x9d;b=0xa5;printf(“~a:%x”,~a);printf(“a&b:%x”,a&b);printf(“a

11、b:%x”,a

12、b);printf(“a^b:%x”,a^b);}输出结果:~a:a&b:a

13、b:a^b:6285bd38位逻辑运算符的应用:&运算符的应用:①与0相&,清0; ②与1相&,取指定位。

14、运算符的应用:与1相

15、,可对某些位定值为1。^运算符的应用:与1相^,使特定位翻转;2.

16、位移位运算符<<(按位左移)、>>(按位右移)运算规则:移位时,移出的位数全部丢失,移出的空位补入的数与左移还是右移有关。左移——补入的数全都是0右移无符号数——补入的数全都是0有符号数——取决于系统(补入0或符号位)例如:unsigneda=3;a<<2的十进制值是:a>>1的十进制值是:1213.位复合赋值运算符由位运算符与赋值运算符组成。&=、

17、=、^=、<<=、>>=例如:a&=b相当于a=a&ba<<2相当于a=a<<2总结位运算符:(1)位运算符中按位取反运算符的优先级最高,它比算术运算符,关系运算符,逻辑运算符和其他位运算符都高。(2)位运算符与赋值运算符

18、相结合可以组成复合的赋值运算符。例如:&=<<=>>=^=(3)如果两个类型长度不同的数进行位运算,则需要进行补位。如a&b,b为int型,a为long型。系统将二者右端对齐并对较短的数b进行左补位,如果b为正数,则左侧16位补满0,如b为负数,左端应补满1;如果b为无符号整型数,则左侧补满0。例:设计一个函数,给出一个数的原码,得到该数的补码。分析:根据补码的定义,一个正数的补码等于该数的原码,一个负数的补码等于该数的反码加1。假设a为16位整数,则步骤为:(1)判别给定整数是正数还是负数。方法是:z=a&0x8000;若z等于0,则a为正数;若为非0,则a为负数。(

19、2)如果z非0,有z=~a+1+0x80000;否则z=a。(3)返回z。程序如下:#includemain(){inta,get(int);printf("输入一个十六进制数:");scanf("%x",&a);printf("t它的补码是:%x",get(a));}get(intvalue)/*求一个数的补码*/{intz;z=value&0x8000;if(z==0)z=value;/*符号位为0,为正数*/else/*符号位为1,为负数*/{z=~value+1;z=z+0x80000;}/*恢复符号位*/returnz;}运行结果为

20、:输入一个十六进制数:4e5它的补码是:4e5三、位运算符的优先级(添加)位运算符自身的优先级为(从高到低):~、(<<、>>)、&、^、

21、位运算符与其他运算符相比较优先级为(从高到低):~、算术运算符、(<<、>>)、关系运算符、&、^、

22、、逻辑运算符、条件运算符、赋值(复合赋值)运算符、逗号运算符例如:chara=9,b=020;printf(“%o”,~a&b<<1);输出结果:4012.3位段位段:在一个结构体中可以以位为单位来指定 其成员所占内存长度,这种以位为单位 的成员称为位段(或位域)。如:structpacked_d

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

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

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