关于Java的位运算的说明。

关于Java的位运算,我之前没怎么注意,因为用的很少。但是,我在面试题遇到了这一部分的考察。所以,特此记录一下。

首先说一下,理解位运算的前提是对计算机的原码、反码和补码之间的掌握比较熟练,这里就不多说了,这是理解位运算的前提,不然一切都是白搭。下面,我就具体说一下位运算怎也用。

Java的位运算包括&(位与运算),|(位或运算),^(位异或运算),~(按位取反运算),<<(左移),>>(右移),(无符号右移)

A>&运算(有0则0)                                        例如3&4

首先,将3和4都转换成二进制形式,即

3=00000000 00000000 00000000 00000011

4=00000000 00000000 00000000 00000100

结果是0

B>|运算(有1则1)  和&运算类似

C>^运算(相同则0,不同则1)  和&运算类似

D>~运算,这个比较麻烦,具体计算过程如下。        例如~3

首先,求出补码。3=00000000 00000000 00000000 00000011

然后,每一位都进行取反操作。即11111111 11111111 11111111 11111100(补码)

然后,求出反码。即11111111 11111111 111111111 11111011

最后,求出原码。即10000000 00000000 00000000 00000100              结果是-4

E>    <<运算(左移最高位丢弃,右边补0)

           >>运算(最高位是0,左边补0;最高位是1,左边补1)

            >>>无符号右移(无论最高位是0还是1,最高位都补0)

            注意:移位运算操作的是二进制数对应的补码,而不是原码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值