第9章位运算2第9章位运算本章要点:六种位运算的基本概念、主要应用位运算的混合使用3第9章位运算9.1位运算的类型9.2位运算举例9.3位段9.4总结与提高49.1位运算的类型C语言一共提供了六种位运算符:&:按位“与”|:按位“或”∧:按位“异或”~:取反:右移这六种运算符号的优先级别(由高到低):‘~’—>‘’—>‘&’—>‘∧’—>‘|’
这六种运算符号的结合性为:‘~’为自右至左,其它为自左至右
59.1位运算的类型要特别注意的是,参与运算的数是以补码方式出现的,并且参与运算的量应为整型或字符型,不能为实型数据
69.1位运算的类型—按位“与”运算按位“与”运算符“&”是双目运算符,其功能是对参与运算的两数从低位到高位对应的位相与,“与”操作规定为:1&1的结果为1,0&1、1&0、0&0的结果都为0
79.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,-689.1位运算的类型—按位“与”运算说明:5的二进制数是00000101,6的二进制数是00000110,那么a&b的结果为4,如下式所示
00000101(5)(&)00000110(6)00000100(4)而-5的二进制数补码是11111011,-6的二进制数补码是11111010,因此c&d的结果为-6,如下式所示
11111011(-5)(&)11111010(-6)11111010(-6)99.1位运算的类型—按位“与”运算按位“与”运算常用于位清零
欲将一个变量的某些位清零,只要同另一个相应位为0其余位为1的数进行“与”运算即可
同理,要提取某个数的一些位,只要将其同另一个相应位为1而其余位为0的数进行“与