第11章 位运算

第11章 位运算

ID:20604061

大小:113.00 KB

页数:30页

时间:2018-10-14

第11章 位运算_第1页
第11章 位运算_第2页
第11章 位运算_第3页
第11章 位运算_第4页
第11章 位运算_第5页
资源描述:

《第11章 位运算》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第10章位运算11.1位运算符11.2位段11.3应用举例11.1位运算符当两个运算对象的位数不同时,系统将自动进行如下处理:先将两个运算数右端对齐。再将位数不足的一个运算对象向高位扩充,即:无符号数和正整数左端用0补齐;负数左端用1补齐;然后对位数相等的这两个数按位进行运算。“按位与”运算(&)“按位与”运算是将参加运算的两操作对象,按对应的二进制位分别进行“逻辑与”运算。运算规则为:只有两个相应位都为1时,该位的运算结果才为1;两个相应位的值相异或均为0时,该位的运算结果为0。11.1位运算符【例11.

2、1】求表达式12&10的值。main(){charx=12,y=10;printf(“%d,%d”,x,y);x=x&y;printf(“%d,%d”,x,y);}输出结果为:12,108,1011.1位运算符按位与运算用途:清零:若想将某个存储单元清零,只需将这个存储单元的值与零进行“与”运算。【例11.2】分析下面程序结果main(){charch=46;printf("%d",ch);ch=ch&0;printf("%d",ch);}输出结果为:46011.1位运算符获取指定位:如果要

3、想获取某数据X的指定位,则可以用一个数与X进行“与”运算,此数在与指定位相同的位上的值为1,其余各位为0。【例11.3】从键盘输入一个整数,判断此数是否能被2整除。#includemain(){intx;printf("Pleaseinputanumber:");scanf("%d",&x);if((x&0x01)==0)/*通过与运算,只保留该数的最低位,然后判断其是否为0*/printf("%dcanbedividedby2exactly!",x);/*最低位为0,该数能被2整除*

4、/elseprintf("%dcan’tbedividedby2exactly!",x);/*最低位为1,不能被2整除*/}11.1位运算符“按位或”运算(

5、)按位或运算是将参加运算的两操作对象,按对应的二进制位分别进行“逻辑或”运算。运算规则为:只有两个相应位都为0时,该位的运算结果才为0,其它情况下,结果全为1。【例11.4】求表达式12

6、10的值。main(){charx=12,y=10;printf(“%d,%d”,x,y);x=x

7、y;printf(“%d,%d”,x,y);}输出结果

8、为:12,1014,1011.1位运算符用途:按位“或”经常用来对一个数据的某些位置1。【例11.5】把整数x(8位)的低4位置1,高4位不变。main(){charx=67;printf(“%d”,x);x=x

9、15;printf(“%d”,x);}输出结果为:677911.1位运算符“按位异或”运算(^)按位或运算是将参加运算的两操作对象,按对应的二进制位分别进行“按位异或”运算。运算规则为“按位异或”的应用:参加运算的两个运算量,如果两个相对应位上的值不同,则该位的结果为1;如果对应位上的值相

10、同,则该位的结果为0。“按位异或”的应用使特定位翻转,即使指定的位求反。【例11.6】设x=46,将其高4位保留原样,低4位各位求反。main(){charx=46;printf(“%d”,x);x=x^15;printf(“%d”,x);}11.1位运算符输出结果为:4633对变量置零。每一个数与它自身进行“异或”运算,结果各位均为零。即:x^x=0。【例11.7】不用临时变量,交换两个变量的值。main(){charx=12,y=10;printf(“%d,%d”,x,y);x=x^y;y=

11、y^x;x=x^y;printf(“%d,%d”,x,y);}输出结果为:12,1010,1211.1位运算符“按位取反”运算(~)“按位取反”运算符“~”是唯一的一个单目位运算符,用来将一个二进制数按位取反,即将1变0,将0变1。【例11.8】给出一个数的原码,求出该数的补码。main(){unsignedinta;/*声明一个无符号的整数a*/unsignedintgetbits(unsigned);/*函数声明*/printf("Inputanoctalnumber:");scanf("%o"

12、,&a);/*以八进制形式输入一个无符号的整数*/printf("result:%o",getbits(a));/*以八进制形式输出*/}11.1位运算符unsignedintgetbits(unsignedvalue)/*求一个二进制数的补码*/{unsignedintz;z=value&10000000;if(z==10000000)z=~value+1;/*对负数求其补码*/elsez=value;/*正数

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

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

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