Java中的移位操作

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

Java中的位操作指定包括:& ~ >> << >>>,前面几个都非常简单,主要是以为操作比较轻易出错.

1.<<

逻辑左移,右边补0,符号位和其他位一样.

正数:

x<<1一般相当于2x,但是可能溢出.

溢出范围: 230~(231-1) 二进制表示 010000...000到01111....1111,移位后最高为变为1了,变成负数了.

负数:

x<<1一般也相当于2x,也有可能溢出.

溢出范围: -231~-(230+1)二进制表示10000...000到101111...1111,移位后最高为变成0了,变成正数了.

2.>>

算术右移,和上面的不对应,为正数时左边补0,为负数时左边补1.

x>>1,相当于x/2,余数被舍弃,因为这个是缩小,所以不会溢出.

不过有一点要注重: -1右移多少位都是-1.

另外舍弃的余数是正的, 3>>1=1 舍弃的余数是1.

-3>>1=-2 舍弃的余数也是1,而不是-1.

对于正数 x>>1和x/2相等

对于负数 x>>1和x/2不一定相等.

3.>>>

逻辑右移,这个才是和<<对应的

这个把符号位一起移动,左边补0

对于正数,>>>和>>是一样的

对于负数,右移之后就变成正数了.

可以使用Integer.toBinaryString(int i)来看01比特,更加直观.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航