Java之运算符
java运算符分为算数运算符、位运算符、逻辑运算符、其他运算符(三元运算符),具体如下:
&(按位与)
&按位与的运算规则是将两边的数转换成二进制位, 最后运算最终值,其运算法则为:两个数都为真,最终值才为真,一个假既值为假。(1&1=1、1&0=0、0&1=0、0&0=0)
3的二进制位是0000 0011,5的二进制位是0000 0101,那么就是011 & 101,由按位与运算的规则可求得,最终值为001,既值为1。
7的二进制位是0000 0111,那就是101 & 111等于101,也就是0000 0101,估值为5
&&(逻辑与)
&&逻辑与也称为短路逻辑与。先运算&&左边的表达式,一旦为假,后续不管多少的表达式,均不再计算,一个为真,在计算后边的表达式,两个为真才为真。
|(按位或)
|按位或和&按位与计算方式都是转换二进制再计算,不同的是计算规则(一个为真即为真)1|0 = 1、0|1 = 1、1|1 = 1、0|0 = 0
8的二进制位0000 1000,2的二进制位是0000 0010,1000 | 0010,最终值为1010,故8|2=10
||(逻辑或)
逻辑或||的运算规则是一个为真即为真,后续不再计算,一个为假再计算后边的表达式。
^(异或运算符)
^异或运算符就是字面意思,异就是不同,其运算规则为1^0 = 1、1^1 = 0、0^1 = 1、0^0 = 0
5的二进制位是0000 0101,9的二进制位是0000 1001,也就是0101^1001,结果为1100,00001100的是十进制为是12
<<(左移运算符)
5<<2的意思为5的二进制位往左挪两位,右边补0,5的二进制位是0000 0101,就是把有效值101往左挪两位就是0001 0100,正数右边第一位补0,负数补1,等于乘于2的n次方,十进制位是20
>>(右移运算符)
凡是运算符都要先把值转换成二进制再进行后续的运算,5的二进制位是0000 0101,向右移两位就是把101右移后两位,正数左边第一位补0负数补1,等于乘于2的n次方,结果为1
~(取反运算符)
取反就是把要处理的数先转换为二进制,1为0,0为1,10 的二进制位是0000 1010,取反之后就是1111 0101,值为-11
>>>(无符号右移运算符)
正数无符号右移
无符号右移运算符和右移运算符的主要区别在于负数的计算,因为右移运算符是高位补0,移多少位补多少个0
15的二进制是0000 1111,右移两位就是0000 0011,最终值为3