Java中几个特殊的运算符

1、^(异或运算符)

运算规则:相同则为0,相异则为1
如:1010 ^ 1011 = 0001

2、&(与运算符)

运算规则:相同则为1,相异则为0
如:1010 & 1011 = 1010
另外&还能用于取余:x & (y-1)

3、| (或运算符)

运算规则:有一个为1,则为1,否则为0
如:1010 | 1011 = 1011


以下三种运算符都是位运算符

>>x(常数): 向右移动x位(顶点在哪个方向就往哪个方向移动),如果该数是正数,则高位(最左边)补x个0,如果是负数,则最高位补x个1。

<<x(常数): 向左移动x位(顶点在哪个方向就往哪个方向移动),无论正负数低位(最右边)都补x个0。

<<<: 无该表示方式。

>>>x(常数): 表示无符号右移x位,所谓无符号是与>>x对比,该操作在移动后,无论正负数高位(最左边)都补0。

4. <<(左移运算符)

举例1:-20<<2
原码:10000000 00000000 00000000 00010100

反码: 11111111 11111111 11111111 11101011(符号位不变,其他位取反)

补码: 11111111 11111111 11111111 11101100(反码 + 1)

左移两位(最右边两位添0)

补码: 11111111 11111111 11111111 10110000

反码: 11111111 11111111 11111111 10101111(补码 - 1)

原码: 10000000 00000000 00000000 01010000(符号位不变,其他位取反)

结果:-80

举例2:20<<2
原码(反码,补码):00000000 00000000 00000000 00010100

左移两位(最右边两位添0)

原码(反码,补码):00000000 00000000 00000000 01010000

结果:80

5. >>(右移运算符)

举例1:-20>>2
原码:10000000 00000000 00000000 00010100

反码: 11111111 11111111 11111111 11101011(符号位不变,其他位取反)

补码: 11111111 11111111 11111111 11101100(反码 + 1)

右移两位(最左边两位添1)

补码: 11111111 11111111 11111111 11111011

反码: 11111111 11111111 11111111 11111010(补码 - 1)

原码: 10000000 00000000 00000000 00000101(符号位不变,其他位取反)

结果:-5

举例2:20>>2
原码(反码,补码):00000000 00000000 00000000 00010100

右移两位(最左边两位添0)

原码(反码,补码):00000000 00000000 00000000 00000101

结果:5

6. >>>(无符号右移运算符)

举例1:-2>>>1
原码:10000000 00000000 00000000 00000010

反码: 11111111 11111111 11111111 11111101(符号位不变,其他位取反)

补码: 11111111 11111111 11111111 11111110(反码 + 1)

右移1位(无符号位运算符,最左边一位只添0)

补码: 01111111 11111111 11111111 11111111

反码: 01111111 11111111 11111111 11111111(高位为0,正数)

原码: 01111111 11111111 11111111 11111111(与反码相同)

结果:2147483647

举例2:2>>>1
原码(反码,补码):00000000 00000000 00000000 00000010

右移一位(最左边一位添0)

原码(反码,补码):00000000 00000000 00000000 00000001

结果:1

7、&& (逻辑与运算符)

运算规则:符号两边全为真是则为真,否则为假。
&也可以做为逻辑与运算符,区别在于&会判断两边,而&&如果左边为假,右边就不执行了。因此&&也称为短路与

8、|| (逻辑或运算符)

运算规则:符号两边有一个为真则为真,否则为假
| 也可以做为逻辑与运算符,区别在于 | 会判断两边,而 || 如果左边为假,右边就不执行了。因此 || 也称为短路或。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值