第9章 位运算

第9章 位运算

ID:42390398

大小:538.00 KB

页数:30页

时间:2019-09-14

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

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

1、第9章位运算第9章位运算本章要点:六种位运算的基本概念、主要应用位运算的混合使用2第9章位运算9.1位运算的类型9.2位运算举例9.3位段9.4总结与提高39.1位运算的类型C语言一共提供了六种位运算符:&:按位“与”

2、:按位“或”∧:按位“异或”~:取反<<:左移>>:右移这六种运算符号的优先级别(由高到低):‘~’—>‘<<’和‘>>’—>‘&’—>‘∧’—>‘

3、’。这六种运算符号的结合性为:‘~’为自右至左,其它为自左至右。49.1位运算的类型要特别注意的是,参与运算的数是以补码方式出现的,并且参与运算的量应为整型或字符型

4、,不能为实型数据。59.1位运算的类型—按位“与”运算按位“与”运算符“&”是双目运算符,其功能是对参与运算的两数从低位到高位对应的位相与,“与”操作规定为:1&1的结果为1,0&1、1&0、0&0的结果都为0。69.1位运算的类型—按位“与”运算例9-1两个整数的“与”操作。main(){inta=5,b=6;intc=-5,d=-6;intx,y;x=a&b;y=c&d;printf("\n%d,%d",x,y);}该程序运行的结果为:4,-679.1位运算的类型—按位“与”运算说明:5的二进制数是00000101,6的二进

5、制数是00000110,那么a&b的结果为4,如下式所示。00000101(5)(&)00000110(6)00000100(4)而-5的二进制数补码是11111011,-6的二进制数补码是11111010,因此c&d的结果为-6,如下式所示。11111011(-5)(&)11111010(-6)11111010(-6)89.1位运算的类型—按位“与”运算按位“与”运算常用于位清零。欲将一个变量的某些位清零,只要同另一个相应位为0其余位为1的数进行“与”运算即可。同理,要提取某个数的一些位,只要将其同另一个相应位为1而其余位为0

6、的数进行“与”运算即可。99.1位运算的类型—按位“或”按位“或”运算符“

7、”是双目运算符,其功能是参与运算的两数从低位到高位对应的位相或,“或”操作规定为:0

8、0的结果为0,1

9、1、1

10、0及0

11、1的结果都为1。109.1位运算的类型—按位“或”按位“或”运算常用来对数据的某些位置1。假设int型变量a的值为20000,它对应的16位二进制数是0100111000100000,表达式a

12、255的结果是变量a对应数值的低8位全置为1,高8位保留原样。如下式所示。0100111000100000(20000)(

13、)000000001

14、1111111(255)0100111011111111(20223)从上例中可以看出,如果要使某个数的一些位变成1,可以让这些位按位与1进行“或”运算,其它位则分别与0相“或”,保持不变。119.1位运算的类型—按位“异或”按位“异或”运算符“∧”是双目运算符,其功能是参与运算的两数从低位到高位对应位相“异或”,“异或”运算规定:1∧0和0∧1的结果为1,1∧1和0∧0的结果为0。八进制数22与八进制数13按位进行“异或”的算式如下所示。00010010(022)∧00001011(013)00011001(031)与1进行“

15、异或”运算的位将得到与该位相反的值,即1∧01,1∧10。与0进行“异或”运算的位则保持不变,即0∧00,0∧11。因此,“异或”运算可以方便地将数据的某些位翻转,而其它位不变。129.1位运算的类型—取反取反运算符“~”是单目运算符,其功能是对参与运算的数的各二进制位按位求反。例如:~00000000101100101111111101001101139.1位运算的类型—左移左移运算符“<<”是双目运算符,它的功能是把“<<”左边的运算数的各二进位整体左移若干位,“<<”右边的数则指定移动的位数,左移过程中丢弃移出存储

16、单元的高位数据,低位补0。例如:表达式a<<4的结果是a中数据的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。可见在高位没有溢出1的情况下,左移n位相当于该数乘以n个2。但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。左移比乘法运算快得多,有些C编译程序自动将乘2的运算用左移一位来实现,将乘以n个2的幂运算处理为左移n位。149.1位运算的类型—右移右移运算符“>>”是双目运算符。其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的

17、位数。例如:设a=15,a>>2表示把00001111右移为00000011(十进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,高位补0;而为负数时,高位是补0或是补1取决于编译系统的规定。TurboC和很多系统规定为补1。与左移运

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

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

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