java中位运算符详解

java中位运算符有“与( & )”、“或( | )”、“异或( ^ )”、“取反( ~ )”、“左移( << )”、“右移( >> )”、“无符号右移( >>> )”,主要是针对二进制来进行逻辑计算的
在这里插入图片描述

与( & )

使用规则:有 0 则 0
示例: 3 & 4 = 0

0011 // 3 的二进制
0100 // 4 的二进制
-------------
0000

4 & -1 = 4

0000 0100 // 4的二进制码
1111 1111  // -1 的二进制补码
0000 0100 // 逻辑运算结果
0000 0100 // 计算结果

或( | )

使用规则:有 1 则 1
示例: 3 | 4 = 7

0011 // 3 的二进制
0100 // 4 的二进制
-------------
0111

3 | -4 = -1

0000 0011 // 3 的二进制码
1111 1100 // -4 的二进制补码
1111 1111 // 逻辑运算结果
1000 0001 // 计算结果 取反+1

异或( ^ )

使用规则:相同为 0, 不同为 1
示例:3 ^ 4 = 7

0011
0100
----------
0111

3 ^ -5 = -8

0000 0011 // 3 的二进制码
1111 1011 // -5 的二进制补码
1111 1000 // 逻辑运算结果
1000 1000 // 计算结果 -1

取反( ~ )

使用规则:遇 0 则 1,遇 1 则 0
示例: ~ 8 = -9

8 转变成二进制补码
0000 0000 0000 0000 0000 0000 0000 1000
取反(~发挥作用)
1111 1111 1111 1111 1111 1111 1111 0111
上一步得到的二进制数-1
1111 1111 1111 1111 1111 1111 1111 0110
然后取反,得到目标值(这个目标值是指~正数这个负数)的绝对值的补码
0000 0000 0000 0000 0000 0000 0000 1001
上一步的补码转化为十进制正数,然后家伙加上负号,就得到了目标值
-9

~ -9 = 8

-9 首先将负数的绝对值9转化为二进制补码的形式
0000 0000 0000 0000 0000 0000 0000 1001
将上一步得到的二进制取反再+1,得到负数(-9)的二进制补码	
1111 1111 1111 1111 1111 1111 1111 0110
1111 1111 1111 1111 1111 1111 1111 0111
取反(~发挥作用)
0000 0000 0000 0000 0000 0000 0000 1000
上一步得到的二进制序列转化为十进制就是目标值。
 8

左移( << )

使用规则:位运算符“<<”就是将操作数所有二进制位向左移动一位,相等于乘以2(运算时,左边的空位根据原数的符号位补0或者1(原来是负数就补1,是正数就补0))
示例:
2 << 1 = 4
-2 << 1 = -4

右移( >> )

使用规则:位运算符“>>”就是将操作数所有二进制位向右移动一位,相等于除以2(运算时,左边的空位根据原数的符号位补0或者1(原来是负数就补1,是正数就补0))
示例:
8 >> 1 = 4
-8 >> 1 = -4

无符号右移( >>>)

无符号右移“>>>”就是将操作数所有二进制位向右移动一位。运算时,左边的空位补0(不考虑原数正负)。
示例:
8 >>> 1 = 4
-8 >>> 1 = 2147483644

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值