日期:2014-05-20  浏览次数:21087 次

关于>>运算符号的问题 为什么右移32位,结果不变
如题。   比如说做运算   i=i> > 32;i值不变

------解决方案--------------------
这种问题还真没有遇到过……
------解决方案--------------------
好像是实际移动的位数d是这样的计算的:d%32
------解决方案--------------------
无论正数、负数,它们的右移、左移、无符号右移 32 位都是其本身,比如 -5 < <32=-5、-5> > 32=-5、-5> > > 32=-5。
------解决方案--------------------
在 JVM 中,> > 操作,后面的数是 int 类型的。

如果前一个操作数是 int 类型的话,取右移位数的低 5 位,相当于右移位数与 0x1f 做了 & 运算;
如果前一个操作数是 long 类型的话,取右移位数的低 6 位,相当于右移位数与 0x3f 做了 & 运算。

正如楼主的例子,> > 32,32(100000),可以看到它的低 5 位全是“0”,与 > > 0 的结果一致。
------解决方案--------------------
Up