Java位运算

Java位运算

位移操作:(只针对 int类型的数据有效,java中,一个int的长度始终是32位,也就是4个字节,它操作的都是该整数的二进制数).也可作用于以下类型,即 byte,short,char,long(它们都是整数形式)。当为这四种类型时,JVM先把它们转换成int型再进行操作。

1、左移(<<)

m<< n的含义:把整数m表示的二进制数左移n位,高位移出n位都舍弃,低位补0. (此时将会出现正数变成负数的可能),如下实例:
5<<29 :把十进制的数值5左移两位,按如下步骤计算,

  1. 把5转位16位的二进制机器数:00000000 00000000 00000000 00000101
  2. 按左移原理,将二进制数左移两位:10100000 00000000 00000000 00000000
  3. 左移后高位是1,结果显然是负数

m<< n即在数字没有溢出的前提下,对于正数和负数,左移n位都相当于m乘以2的n次方.

2、右移(>>)

m>>n的含义:把整数m表示的二进制数右移n位,m为正数,高位全部补0;m为负数,高位全部补1,实例如下:
-5>>2:把十进制的数值-5右移两位,按如下步骤计算,

  1. 把-5转位16位的二进制机器数:11111111 11111111 11111111 11111011
  2. 按右移原理,将二进制数右移两位:11111111 11111111 11111111 11111110
  3. 右移后结果为-2

**m>>n即相当于m除以2的n次方,得到的为整数时,即为结果。如果结果为小数,此时会出现两种情况:

  • 如果m为正数,得到的商会无条件 的舍弃小数位;
  • 如果m为负数,舍弃小数部分,然后把整数部分加+1得到位移后的值。

**

3、无符号右移(>>>)

m>>>n:整数m表示的二进制右移n位,不论正负数,高位都补0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值