C语言程序设计高职计算机配套教学课件ppt项目10.ppt

C语言程序设计高职计算机配套教学课件ppt项目10.ppt

ID:51963637

大小:226.50 KB

页数:10页

时间:2020-03-26

C语言程序设计高职计算机配套教学课件ppt项目10.ppt_第1页
C语言程序设计高职计算机配套教学课件ppt项目10.ppt_第2页
C语言程序设计高职计算机配套教学课件ppt项目10.ppt_第3页
C语言程序设计高职计算机配套教学课件ppt项目10.ppt_第4页
C语言程序设计高职计算机配套教学课件ppt项目10.ppt_第5页
资源描述:

《C语言程序设计高职计算机配套教学课件ppt项目10.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、项目10位运算1项目导读项目目标项目任务项目8介绍的指针运算和本项目将介绍的位运算很适合于编写系统软件的需要,是C语言的重要特色。C语言中,位运算的对象只能是整数型或字符型数据,不能是其他类型的数据。项目导读●能使用位运算处理整型数据。●学会利用位运算完成汇编语言的某些功能(置位、位清零、移位)。●学会利用位段实现数据的压缩。思考项目目标任务10.1位运算符和位运算C语言提供如表10.1所列出的位运算符。运算符含义运算符含义&按位与~取反|按位或<<左移∧按位异或>>右移说明:(1)位运算符中除~以外,均为二目(元)运算符,即要求两侧各有一个运算

2、量。(2)运算量只能是整型或字符型的数据,不能为实型数据。下面对各运算符分别介绍如下:任务10.1位运算符和位运算10.1.1“按位与”运算符(&)参加运算的两个数据,按二进位进行“与”运算。如果两个相应的二进位都为1,则该位的结果值为1,否则为0。即0&0=0;0&1=0;1&0=0;1&1=1;例如:3&5并不等于8,应该是按位与。3=00000011(&)5=0000010100000001因此,3&5的值得1。如果参加&是负数运算的是负数(如-3&-5),则以补码形式表示为二进制数,然后按位进行“与”运算。任务10.1位运算符和位运算10

3、.1.2按位或运算符(|)两个相应的二进位中只要有一个为1,该位的结果值为1。即0|0=0;0|1=1;1|0=1;1|1=1。例如:060|017将八进制数60与八进制数17进行按位或运算。00110000(|)0000111100111111低6位全为1。如果想使一个数a的低4位改为1,只需将a与017进行按位或运算即可。任务10.1位运算符和位运算10.1.3“异或”运算符(∧)异或运算符∧也称XOR运算符。它的规则是若参加运算的两个二进位同号,则结果为0(假);异号则为1(真)。即0∧0=0;0∧1=1;1∧0=1;1∧1=0;如:001

4、11001(十进制数57,八进制数071)(∧)00101010(十进制数42,八进制数052)00010011(十进制数19,八进制数023)即071∧052,结果为023(八进制数)。10.1.4“取反”运算符(~)~是一个单目(元)运算符,用来对一个二进制数按位取反,即将0变1,1变0。例如~025是对八进制数25(即二进制数00010101)按位求反。任务10.1位运算符和位运算10.1.5左移运算符(<<)用来将一个数的各二进位全部左移若干位。例如:a=a<<2将a的二进制数左移2位,右补0。若a=15,即二进制数00001111,左移

5、2位得00111100,即十进制数60(为简单起见,我们用8位二进制数表示十进制数15,如果用16位,结果是一样的)。10.1.6右移运算符(>>)a>>2表示将a的各二进位右移2位。移到右端的低位被舍弃,对无符号数,高位补0。如a=017时:任务10.1位运算符和位运算10.1.7位运算赋值运算符位运算符与赋值运算符可以组成复合赋值运算符如:&=,|=,>>=,<<=,∧=例如,a&=b相当于a=a&b。a<<=2相当于:a=a<<2。10.1.8不同长度的数据进行位运算如果两个数据长度不同(例如long型和int型)进行位运算时(如a&b,而

6、a为long型,b为int型),系统会将二者按右端对齐。如果b为正数,则左侧16位补满0。若b为负数,左端应补满1。如果b为无符号整数型,则左侧填满0。任务10.2位运算的应用示例10.1取一个整数a从右端开始的4~7位。解题思路:①先使a右移4位。见图11.3。图10.3(a)是右移时的情况,(b)图是右移4位后的情况。目的是使要取出的那几位移到最右端。a图10.3b右移到右端可以用下面方法实现:a>>4任务10.2位运算的应用②设置一个低4位全为1,其余全为0的数。可用下面方法实现:~(~0<<4)~0的全部二进制为1,左移4位,这样右端低4

7、位为0。见下面所示:0:0000…000000~0:1111…111111~0<<4:1111…110000~(~0<<4):0000…001111③将上面二者进行&运算。即a>>4&~(~0<<4)程序如下:main(){nusigneda,b,c,d;scanf(“%o”,&a);b=a>>4;c=~(~0<<4);d=b&c;printf(“%o,%d%o,%d”,a,a,d,d);}运行情况如下:331331,217(a的值)15,13(d的值)

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

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

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