C语言程序设计 第十一章 位运算

C语言程序设计 第十一章 位运算

ID:43916678

大小:1.20 MB

页数:18页

时间:2019-10-16

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

《C语言程序设计 第十一章 位运算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、甘肃工业职业技术学院信息工程系2009年12月C语言程序设计张燎第十一章位运算§位运算符和位运算§位运算举例§位段§11.1位运算符和位运算C语言提供了六种位运算符:&按位与~取反

2、按位或<<左移^按位异或>>右移说明:(1)位运算符除~以外,均为二目运算,即要求两侧各有一个运算量。(2)运算量只能是整型或字符型的数据,不能为实型数据。11.1.1“按位与”运算符(&)功能:对参与运算的两数各对应的二进位相与。只有对应的两个二进制位均为1时,结果位才为1,否则为0。即0&0=0,0&1=0,1&0=0,1&1=1参与运算的数以补码方式出现。例如3&5,应该

3、按位与:00000011(3)(&)00000101(5)00000001(1)按位与的特殊用途:◆某些位清零◆保留某些位◆取一个数中某些指定位例如:把a的高八位清0,保留低八位。 可作a&255运算0010110010101100 (&)0000000011111111 0000000010101100把一个数01010100的左面第3、4、5、7、8位保留下来。01010100 (&)0011101100010000原来数中为1的位,新数中相应位为0原来数要保留的位,新数中相应位为111.1.2“按位或”运算符(

4、)功能:对参与运算的两数各对应的二进位

5、相或。只要对应的两个二进制位有一个为1时,结果位就为1。即0

6、0=0,0

7、1=1,1

8、0=1,1

9、1=1例如:9

10、5可写算式如下:00001001(9)(

11、)00000101(5)00001101(13)可见9

12、5=13按位或运算常用来对一个数据的某些位定值位1。11.1.3“异或”运算符(^)功能:对参与运算的两数各对应的二进位相异或。当对应的两个二进制位相异时,结果位就为1。即0∧0=0,0∧1=1,1∧0=1,1∧1=0例如:9∧5可写算式如下:00001001(9)(∧)00000101(5)00001100(12)可见9∧5=12“异或”的意思是

13、判断两个相应的位值是否为“异”,为“异”就取真(1),否则为假(0)。举例说明∧运算符的应用★使特定位翻转假设有0111010,想使其低4位翻转,即1变为0,0变为1。01111010(∧)00001111 01110101要想使哪几位翻转,就将与其进行∧运算的该几位置为1即可。★与0相∧,保留原值01111010(∧)00000000 01111010举例说明∧运算符的应用★交换两个值,不用临时变量假如a=3,b=4,想将a和b的值互换,可以用以下赋值语句实现:a=a∧b; b=b∧a; a=a∧b;用竖式来说明:a=011(3)(∧)b=100(4)a

14、=111(∧)b=100 b=011(3)(∧)a=111 a=100(4)11.1.4“取反”运算符(~)功能:对参与运算的数的各二进位按位取反。取反运算符为单目运算符,具有右结合性。例如:~9的运算为:~(0000000000001001)结果为1111111111110110~运算符的优先级高于算数运算符、关系运算符、逻辑运算符、和其他位运算符都高。例如:b&~a,要先进行~a运算,然后进行&运算。例:a的值6412711.1.5左移运算符(<<)功能:用来将一个数的各二进位全部左移若干位。高位左移后溢出,舍弃。低位补0。a的二进制形式0100000

15、001111111a<<11000000011111110a<<20000000011111100左移一位相当于该数乘以2注意此种结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。11.1.6右移运算符(>>)功能:用来将一个数的各二进位全部右移若干位。右移时,需要注意符号位问题。对于无符号数,右移时左边高位移入0。对于有符号数,如果原来符号位为0(该数为正),则左边也是移入0。如果原来符号位为1(即负数),则左边移入0还是1,要取决于所用的计算机系统。移入0的称为“逻辑右移”移入1的称为“算术右移”例如:a:1001011111101101(用二进

16、制形式表示)a>>1:0100101111110110(逻辑右移时)a>>1:1100101111110110(算术右移时)右移一位相当于该数除以2,右移n位相当于除以2n。§11.2位运算举例例12.1取一个整数a从右端开始的4~7位。(1)先使a右移4位,目的是使要取出的那几位移到最右端。08743(a)15043(b)15右移到右端可以用a>>4来实现。(2)设置一个低4位全为1,其余全为0的数。可以用~(~0<<4)来实现。0:0000…000000~0:1111…111111 ~0<<4:1111…110000 ~(~0<<4):0000…001

17、111(3)将上面的(1)、(2)进行&运算。(a>>4)&~(~

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

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

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