青少年编程知识记录 codecoming

C++中的逻辑与运算

  1. 样例



#include<iostream>  using namespace std;  int main(){  	cout<<(1&1)<<endl; //1   	cout<<(1&-1)<<endl; // 1   	cout<<(-1&-1)<<endl; //-1   	cout<<(-2&-3)<<endl; //-4   	return 0;  }



2.解释

 1&1:

      1    0000 0001  

      &   

      1    0000 0001  

-----------------------

      1    0000 0001   



 1&-1:

     

    

     1    0000 0001  

      &   

     -1   1111 1111  (补码)

-----------------------

      1    0000 0001   



解释:1的补码是1111 1111,然后进行逻辑与运算即可。



 -1&-1:

     

    

     -1   1111 1111  (补码)

      &   

     -1   1111 1111  (补码)

-----------------------

           1111 1111   



解释:负数和负数的逻辑与运算比较特殊。

-1 & -1 的直接结果是1111 1111,出符号位以外,剩下111 1111

然后把最低位减一得: 111 1110

然后按位取反得: 000 0001, 也就是1

加上符号就是-1,所以最后结果是-1



 -2&-3:



     -2   1111 1110 (补码)

      &   

     -3   1111 1101  (补码)

-----------------------

           1111 1100   



解释:

-2 & -3 的直接结果是1111 1100  ,出符号位以外,剩下111 1100

然后把最低位减一得: 111 1011

然后按位取反得: 000 0100, 也就是4

加上符号就是-1,所以最后结果是-4



同理,逻辑或运算也是一样的

(adsbygoogle = window.adsbygoogle || []).push({});

作者:亿万年的星光 分类:C++知识 浏览: