C语言学习笔记--位运算

这一节主要说的是位运算,计算机中的执行速度:位运算 > 加减 > 乘除 > 求余
位运算就是将数字转换成二进制后进行运算,之后再将数字转换成原来的进制

与运算:当两个数相与时,只有都为l的时候结果才为1,其余情况结果都为0,符号 &

    #include
    int main(){
      int a;        
      scanf("%d",&a);        
      printf("%d\n",a&1);            
      return 0;    
   }

这个程序可以判断a是偶数还是奇数,输出为1说明a是奇数,否则是偶数

或运算:当两个数相或时,只要有一个为1结果就是1,两个都为0时结果才是0,符号|

    #include   
    int main(){      
      int a;        
      scanf("%d",&a);        
      printf("%d\n",a|0);            
      return 0;    
   }

这个程序可以判断a是偶数还是奇数,输出为1说明a是奇数,否则是偶数,符号 !

非运算:将1变成0,将0变成1

    #include   
    int main(){  
      bool a = true;        
     printf("%d\n",!a);            
     return 0;
   }

a为true,取返后是false,就是0

注意:当符号是 &&、||时也是两个数相与相或,但是这个时候就不会将数字转换成二进制运算,而是只要这个数字非0就当成1直接参与运算,返回一个bool值

当&&、||运算两边是表达式的时候

    #include   
    int main(){   
     int a = 1,b = 1;        
     if(a++ || b++){   
     
     }        
     printf("a = %d,b = %d",a,b);            
     return 0;    

输出是a = 2,b = 1

在if(a++ || b++)里面,a开始是1,这个时候程序不会执行b++,因为不管b是多少,a++ || b++一定是1,计算机不会做多余的部分

    #include   
    int main(){    
      int a = 0,b = 0;        
     if(a++ && b++){         
      
      }        
      printf("a = %d,b = %d",a,b);            
      return 0;    
   }

输出的是a = 1,b = 0,原因跟上面一样

声明:

本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值