Java中的按位操作符

 

(1)按位与 &

 

示例:7&3=3

两个数二进制的对应位数想比较,如果同1则为1

一0则为0.

111
011
----
011----  3

 

 

(2)按位或 |
示例: 8|2=10

一1则为1,同0才为0
1000-----8
0010------2
------
1010-----  10


(3)按位异或 ^

 

 

7^4=7

 

对应位置不同则为1,相同则为0

 

111-----7
101-----4
-----
010-------  2
101
------
111-------  7

注意:两次异或同一个数  会返回原来的数  可通过此特性进行加密

 

 

 

(4)按位取反 ~

 

~5=-6

首先要明确,取反是二进制操作

在Java中,有符号整数都是用补码来表示

正数时,反码=原码 = 补码 

负数时,反码为原码取反 (符号位除外),补码为反码+1 
下面以5(Integer)为例:
二进制原码:0000 0000 0000 0000 0000 0000 0000 0101
按位取反操作后的原码:1111 1111 1111 1111 1111 1111 1111 1010

符号位为1 是一个负数

1.先求反码:1000 0000 0000 0000 0000 0000 0000 0101
2.再求补码:1000 0000 0000 0000 0000 0000 0000 0110
最高位代表符号位 1 表示负数,0 表示正数 所以结果是-6

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值