优先级
! > 算术运算符 > 关系运算符 > && >|| > 赋值
位运算的优先级如下:
按位反(~)> 位移运算(<<,>>)> 按位与(&)> 按位异或(^)> 按位或(|)
清零
m=m&~m
m=m&0
m=m^m
大小写转换
c = c | 32; 利用或运算将这个字母转化为小写字母
c = c & ~32; 利用与运算将这个字母转化为大写字母
c = c ^ 32; 利用异或运算将字母大小写互换,即大写转小写,小写转大写
c = c | 32; 大写转小写
第五位的0转化为1,其余不变。
c = c & ~32;小写转大写
第五位的1转化为0,其余不变
c = c ^ 32; 大写转小写,小写转大写
第五位的1转为0,0转为1,其余不变
习题
int main(){
printf("%d",((241&15)&&('A'|'a'))); printf("\n");//1
printf("%d",(241&15));printf("\n");//1
printf("%d",(241&14));printf("\n");//0
printf("%d",(1&5));printf("\n");//1
// 3=11 ,5=101 ->001
// 2=10 5=101 ->000
// 1=01 5=101 ->001
printf("%d",(6<<1));printf("\n");//12
printf("%d",(6<<2));printf("\n");//24
printf("%d",(3^24));printf("\n");//27
printf("%d",(3^6<<2));printf("\n");//27
}