Java运算符

目录:&、|、^、~、&&、||、<<、>>、>>>

一、& 

&,按位与运算符。进行运算前,先将两个数转换成二进制。

运算规则为:两者都为真才为真,否则为假。即1&1=1,1&0=0,0&1=0,0&0=0

比如:101&010=000;111&110=110


二、| 

|,按位或运算符。进行运算前,先将两个数转换成二进制。

运算规则为:有真即真,两者都为假才为假。即1|1=1,1|0=1,0|1=1,0|0=0

比如:101|010=111;111|110=111


三、^

^,异或运算符。进行运算前,先将两个数转换成二进制。

运算规则为:异为1,同为0。即1^1=0,1^0=1,0^1=1,0^0=0

比如:101^010=111;001^010=011


四、~

~,取反运算符。

运算规则为:1变0,0变1。即~1=0,~1=0


五、&&

&&,逻辑与。

规则为:先运算&&左边的表达式,若为假,则运算结果为假;若为真,再计算右边的表达式,两个为真才为真。

比如:1&&1=1;0&&1=0


六、||

||,逻辑或。

规则为:表达式两边只要有真即为真,两个都假才为假。


七、<<

<<,左移。左移操作不分正负数,低位补0。

比如:

正数:r = 20 << 2

  20的二进制补码:0001 0100

  向左移动两位后:0101 0000

  向左移动两位结果:r = 80

负数:r = -20 << 2

  -20 的二进制原码 :1001 0100

  -20 的二进制反码 :1110 1011

  -20 的二进制补码 :1110 1100

  左移两位后的补码:1011 0000

  左移两位后的反码:1010 1111

  左移两位后的原码:1101 0000

  左移两位后的结果:r = -80


八、>>

>>,右移,区分正负,如果该数为正,则高位补0,若为负数,则高位补1。

注:以下数据类型默认为byte-8位

正数:r = 20 >> 2

  20的二进制补码:0001 0100

  向右移动两位后:0000 0101

       结果:r = 5

负数:r = -20 >> 2

  -20 的二进制原码 :1001 0100

  -20 的二进制反码 :1110 1011

  -20 的二进制补码 :1110 1100 

  右移两位后的补码:1111 1011 

        反码:1111 1010

        原码:1000 0101

        结果:r = -5


九、>>>

>>>,无符号右移,也叫逻辑右移,即不论正负,高位补0

正数: r = 20 >>> 2

    的结果与 r = 20 >> 2 相同;

负数: r = -20 >>> 2

注:以下数据类型默认为int 32位

  -20的二进制源码:10000000 00000000 00000000 00010100

  -20的二进制反码:11111111  11111111   11111111   11101011

  -20的二进制补码:11111111  11111111   11111111   11101100

                     -右移:00111111  11111111   11111111   11111011

    结果:r = 1073741819

你可能感兴趣的:(Java,SE)