第15章位运算位运算琴岛学院计算机工程系琴岛学院计算机工程系回顾数值的表示原码反码补码数值在计算机中存储或运算时用补码位运算---位运算对象只能是整型或字符型数据运算符:~、、&、^、|~&^|位逻辑运算符位逻辑运算符移位运算符移位运算符单目单目位运算符的运算对象只能是位运算符的运算对象只能是整型数据整型数据或或字字符型数据符型数据,不能是实型数据,不能是实型数据运算对象一律按二进制补码参加运算,并运算对象一律按二进制补码参加运算,并按位进行运算按位进行运算位运算的结果是一个整型数据位运算的结果是一个整型数据低于单目、算术运算符,高于其他运算符低于单目、算术和关系运算符,高于其他运算符(1)格式:~x~x(2)规则:各位翻转,即原来为1的位变成0,原来为0的位变成1
~01001101——————————结果结果:101100101、按位取反——~注:本书中均以short或char型数据为例2.按位左移──>b-1等价于(a+8)>>(b-1)例如:例如:假设假设a=10a=10,,b=2b=2,求,求ab-1b-1main(){inta=10,b=2;printf("%d%d\n",ab-1);}输出结果:409409请自行分析请自行分析运行结果运行结果4
按位与——&1
格式:x&y2
规则:任何位和1与不变,和0与清零例如3&9=1:0011&1001────00013
主要用途:取(或保留)1个数的某(些)位,其余各位置0
按位异或——^(1)格式:x^yx^y如:3^9=10
(2)规则:对应位相同时为0,不同时为1:和和11异或翻转,和异或翻转,和00异或不翻转异或不翻转(3)主要用途:使1个数的某(些)位翻转(即原来为1的位变为0,为0的变为1),其余各位不变
按位或——|(1)格式:x|yx|y(2)规则:对应位均为0时为0,否则