JAVA & 、|、^、<< 、>>、>>>、~ 运算符使用

一、&

如果相对应位都是1,则结果为1,否则为0

例子:

9 & 3

9 二进制:1001

3 二进制:0011

所以 9 & 3 = 0001

结果为 1


二、|

| 如果相对应位都是0,则结果为0,否则为1

例子:

2 | 3

2 二进制:0010

3 二进制:0011

2 | 3 = 0011

结果为3


三、^

^ 如果相对应位值相同,则结果为0,否则为1

例子:

4  ^ 9

4 二进制:0100

9 二进制:1001

4 ^ 9 = 1101

结果为13


四、<<

<<  按位左移运算符。左操作数按位左移右操作数指定的位数。

注意:实际操作按照32位二进制进行,如图


由图可知

2 << 2

2 二进制:0000 0000 0000 0000 0000 0000 0000 0010

左移两位:0000 0000 0000 0000 0000 0000 0000 1000

结果为 8


五、>>

>>  按位右移运算符。左操作数按位右移右操作数指定的位数。

>>为高位补,并且补完后进行减1 除符号位 取反 操作,如图


上图为负数右移运算方式

以 13 >> 2 为例(正数原来跟左移原理一样,只是方向改变)

13 二进制: 0000 0000 0000 0000 0000 0000 0000 1101

右移2位: 0000 0000 0000 0000 0000 0000 0000 0011

结果为 3


六、>>>

>>>  按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。

例子:

5 >>> 2

5 二进制:0000 0000 0000 0000 0000 0000 0000 0101

右移2位: 0000 0000 0000 0000 0000 0000 0000 0001 (左边补零)

结果为 0001  = 1


七、~

按位补运算符翻转操作数的每一位,即0变成1,1变成0。

例子:

~5

5 二进制:0000 0000 0000 0000 0000 0000 0000 0101

翻转后:   1111 1111 1111 1111 1111 1111 1111 1010

除了符号位,其他-1后按位取反

-1操作:   1111 1111 1111 1111 1111 1111 1111 1001

按位取反:1000 0000 0000 0000 0000 0000 0000 0110

结果为  - 6

步骤:翻转》减1》取反(符号位不变,其他位反转)


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值