与运算(&),按位与
双目运算。二个位都置位(等于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) == 5printf("第一个输出:\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;
}