与或非等运算
与运算(&),按位与
双目运算。二个位都置位(等于1)时,结果等于1,其它的结果都等于0。
1 & 1 == 1
1 & 0 == 0
0 & 1 == 0
0 & 0 == 0
&&
表示逻辑与的意思,即为and。当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
比如 12&&23的结果就是1,12&&-1 的结果是1,123&&0的结果就是0
或运算( | ),||是逻辑或。
双目运算。二个位只要有一个位置位,结果就等于1。二个位都为0时,结果为0。
1 | 1 == 1
1 | 0 == 1
0 | 1 == 1
0 | 0 == 0
异或运算(^)
双目运算。二个位不相等时,结果为1,否则为0。
1 ^ 1 == 0
1 ^ 0 == 1
0 ^ 1 == 1
0 ^ 0 == 0
非运算(~)
单目运算。位值取反,置0为1,或置1为0。
#include <iostream>
using namespace std;
int main()
{
int x = 2, y, z;
x *= (y = z = 5); //(y = z = 5) == 5
printf("第一个输出:\n");
printf("x=%d\n", x);
printf("----------------------------------我是分割线------------------------------------");
z = 3;
x == (y = z);
printf("第二个输出:\n");
printf("x=%d\n", x);
printf("----------------------------------我是分割线------------------------------------");
x = (y == z);
printf("第三个输出:\n");
printf("x=%d\n", x);
printf("----------------------------------我是分割线------------------------------------");
x = (y & z); //此时,&表示按位与
printf("第四个输出:\n");
printf("x=%d\n", x);
printf("----------------------------------我是分割线------------------------------------");
x = (y && z);
printf("第五个输出:\n");
printf("x=%d\n", x);
printf("----------------------------------我是分割线------------------------------------");
y = 4;
x = (y | z);
printf("第六个输出:\n");
printf("x=%d\n", x);
printf("----------------------------------我是分割线------------------------------------");
x = (y || z);
printf("第七个输出:\n");
printf("x=%d\n", x);
return 0;
}