&(按位与)
运算规则:两个为真才为真 (1&1=1 , 1&0=0 , 0&1=0 , 0&0=0)
例:3&5=1
3的二进制位是0000 0011,5的二进制位是0000 0101 ,那么就是011 & 101,由按位与运算规则得知,001 & 101等于0000 0001,最终值为1
&&(逻辑与)
运算规则:&&逻辑与也称为短路逻辑与,先运算&&左边的表达式,一旦为假,后续不管多少表达式,均不再计算,一个为真,再计算右边的表达式,两个为真才为真。
|(按位或)
运算规则:一个为真即为真(1|0 = 1 , 1|1 = 1 , 0|0 = 0 , 0|1 = 1)
例:6|2=6
6的二进制位0000 0110 , 2的二进制位0000 0010 , 110|010为110,最终值0000 0110,故6|2等于6
||(逻辑或)
运算规则:一个为真即为真,后续不再计算,一个为假再计算右边的表达式。
^(异或运算符)
运算规则:相同为0,不同为1 (1^0 = 1 , 1^1 = 0 , 0^1 = 1 , 0^0 = 0)
例 5^9=12
5的二进制位是0000 0101 , 9的二进制位是0000 1001,也就是0101 ^ 1001,结果为1100 , 00001100的十进制位是12
<
5<<2的意思为5的二进制位往左挪两位,右边补0,5的二进制位是0000 0101 , 就是把有效值101往左挪两位就是0001 0100 ,正数左边第一位补0,负数补1,等价于:result=num×2的n次方十进制位是20
>>(右移运算符)
5的二进制位是0000 0101,右移两位就是把101左移后为0000 0001,正数左边第一位补0,负数补1,等价于:result=num÷2的n次方,结果为1
~(取反运算符)
运算规则:将0变为1,1变为0
例:5的二进制位是0000 0101,取反后为1111 1010,值为-6
>>>(无符号右移运算符)
运算规则:
对于正数:无符号右移是高位补0,移多少位补多少个0
对于负数:正数的二进制,取反,再加1