C++位运算符及逻辑运算符

10 篇文章 2 订阅

对于一些新手来说,很多时候搞不清楚&和&&的区别,特此在这里整合说明一下,方便以后查看

首先想一个问题:什么是位(bit)?     

 很简单,位(bit)就是单个的0或1,位是我们在计算机上所作一切的基础。计算机上的所有数据都是用位来存储的。一个字节(byte)由八个位组成,一个字(word)是二个字节或十六位,一个双字(dword)是二个字(words)或三十二位。

使用位运算的好处是可以将byte,   word 或 dword 作为小数组或结构使用。通过位运算可以检查位的值或赋值,也可以对整组的位进行运算。


有6种位运算:   
        &       与运算   
        |       或运算   
        ^       异或运算   
        ~       非运算(求补)   
      >>       右移运算   
      <<       左移运算   

(1)与运算(&)   
  双目运算。二个位都置位(等于1)时,结果等于1,其它的结果都等于0。   
        1       &       1       ==       1   
        1       &       0       ==       0   
        0       &       1       ==       0   
        0       &       0       ==       0   

(2)或运算(   |   )   
  双目运算。二个位只要有一个位置位,结果就等于1。二个位都为0时,结果为0。   
        1       |       1       ==       1   
        1       |       0       ==       1   
        0       |       1       ==       1   
        0       |       0       ==       0   

(3)异或运算(^)   
  双目运算。二个位不相等时,结果为1,否则为0。   
    
        1       ^       1       ==       0   
        1       ^       0       ==       1   
        0       ^       1       ==       1   
        0       ^       0       ==       0   

(4)非运算(~)   
  单目运算。位值取反,置0为1,或置1为0。非运算的用途是将指定位清0,其余位置1。非运算与数值大小无关。

(5) 移位运算(>>   与   <<)   
  将位值向一个方向移动指定的位数。右移   >>   算子从高位向低位移动,左移   <<   算子从低位向高位移动。


下面来说说 & 和 && 的区别,以及 | 和 || 之间的不同


&&相当一个开关语句,就是说如果&&前面值为false那么他就不继续执行后面的表达式;而&不管前面的值为什么,总是执行其后面的语句。

&& 和 || 是boolean的逻辑运算, 返回为bool值

  &是位运算符,它会将两边的运算都计算出来,再进行与运算; &是用来处理0101这样的2进制字符的位运算的。 

 
  &&是布尔逻辑运算符(短路运算),只要有一边的运算结果为false,它都会马上返回false;&&是处理true和false这样的boolean运算。

同样的道理,|| 也是布尔逻辑运算符,只要有一边的运算结果是true,它会马上返回true。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值