C++中的逻辑与运算
样例
#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
同理,逻辑或运算也是一样的
扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。