位运算符
int a = 6&1;
“&”:位与运算,同位全部为1,结果为1,否则为0。上面的例子a的值为0;
int a = 6|1;
“I”:位或运算,同位有一个值为1,结果为1,否则为0。上面的例子a的值为7;
int a = ~1;
“~”:位非运算,值为1,返回0,值为0,结果为1。上面的例子a的值为-2(八位二进制:11111110,补码算法,首位1为符号表示,表示负数,1111110取反加1,0000001+1 = 2,最后结果-2);
int a = 6^2;
“^”:位异或运算,同位比较,相同为0,不同为1。上面的例子a的值为4;
int a = 4>>2;
“>>”:位右移运算,转换为二进制,整体右移,左侧补0。上面的例子a的值为4;
int a = 4<<2;
“<<”:位右移运算,转换为二进制,整体右移,左侧补0。上面的例子a的值为16;
逻辑运算符
“&”:逻辑与运算,全部为true时结果为true;
“|”:逻辑或运算,全部为false时结果为false;
“&&”:逻辑与运算,全部为true时结果为true,与&不同,有短路机制,如果第一个操作符是false,会直接返回false;
“||”:逻辑或运算,全部为false时结果为false,与&&相同,有短路机制,如果第一个操作符是true,会直接返回true;
“!”:逻辑非运算,参数为false时结果为true;
“^”:逻辑异或运算,两个参数相同结果为false,不同为true;