第12章 位运算2

第12章 位运算2

ID:42370916

大小:252.50 KB

页数:30页

时间:2019-09-13

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

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

1、第12章位运算12.1位运算符和位运算12.2位段12.1位运算符和位运算概念位运算是指按二进制位进行的运算。因为在系统软件中,常要处理二进制位的问题。例如:将一个存储单元中的各二进制位左移或右移。12.1位运算符和位运算C语言提供的位运算符有:运算符含义运算符含义&按位与~取反

2、按位或<<左移^按位异或>>右移说明:位运算符中除"~"以外,均为双目运算符。运算量只能是整型或字符型的数据,不能为实型数据。12.1.1“按位与”运算符(&)按位与:按二进制位进行“与”运算。运算规则:0&0=00&1=01&0=01&1=112.1.1“按位与”运算符(&)例如:3&5=?00000011(3)&

3、00000101(5)00000001(1)【例12.1】#includevoidmain(){inta=3,b=5,and;and=a&b;printf("%d",and);getch();}运行结果:112.1.1“按位与”运算符(&)注意:如果参加&运算的是负数,则以补码形式进行“与”运算。应用:清零(即全部二进制位为0)方法:找一个二进制数,满足条件:原来的数中为1的位,新数中相应位为0。然后使二者进行&运算。00101011&1001010000000000应用:取一个数中某些指定位方法:将这个数与1按位与即可。例如:有一个整数(2个字节),想要取其中的低字节。

4、0010110010101100&0000000011111111000000001010110012.1.2“按位或”运算符(

5、)按位与:按二进制位进行“或”运算。运算规则:0

6、0=00

7、1=11

8、0=11

9、1=100110000(060)

10、00001111(017)00111111(077)12.1.2“按位或”运算符(

11、)例如:060

12、017=?【例12.2】#includevoidmain(){inta=060,b=017,or;or=a

13、b;printf("%o",or);}运行结果:77应用:常用来对一个数据的某些位定值为1。例如:想使一个数的低4位改为1,只

14、需将这个数与017进行“按位或”运算即可。00110000(060)

15、00001111(017)00111111(077)12.1.3“异或”运算符(^)“异或”判断两个相应的位值是否为“异”(不同),为“异”就取真(1);否则,为假(0)。运算规则:0^0=00^1=11^0=11^1=012.1.3“异或”运算符(^)例如:071^052=?00110000(071)^00001111(052)00111111(023)【例12.3】#includevoidmain(){inta=071,b=052,xor;xor=a^b;printf("%o",xor);}运行结果

16、:23应用:使特定位翻转要使哪几位翻转就将相应位与1进行“^运算”。例如:设有01111010,想使其低4位翻转。01111010^0000111101110101应用:与0相^,保留原值因为原数中的1与0进行^运算得1,0^0得0,故保留原数。例如:012^00=01200001010(012)^00000000(00)00001010(012)应用:交换两个值,不用临时变量例如:a=3,b=4,想将a和b的值互换,可以用以下赋值语句实现:a=a^b;b=b^a;a=a^b;011(3)a^100(4)b111(7)a111(7)a^100(4)b011(3)b111(7)a^011(3)b

17、100(4)a12.1.4“取反”运算符(~)~是一个单目运算符,用来对一个二进制数按位取反,即将0变1,将1变0。运算规则:~0=1~1=012.1.4“取反”运算符(~)例如:~025=?0000000000010101(025)~1111111111101010(0177752)12.1.5左移运算符(<<)左移运算符:是用来将一个数的各二进制位全部左移若干位,右补0。例如:a=15;a=a<<2;//将a的二进制数左移2位00001111001111001560说明:高位左移后溢出,舍弃。左移一位,相当于该数乘以2。左移n位,相当于该数乘以2n。只适用于该数左移时被溢出舍弃的高位中不包

18、含1的情况。12.1.6右移运算符(>>)右移运算符:将一个数的二进制位右移若干位,移到右端的低位被舍弃,对无符号数,高位补0。例如:a=017;a=a>>2;0000111100000011153说明:右移一位相当于除以2,右移n位相当于除以2n。在右移时,需要注意符号位问题。对无符号数,左边高位补0;对于有符号数,左边补0还是1,要取决于所用的计算机系统。TurboC采用“算术右移”的方法:左

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

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

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