读书人

关于gt;gt;运算符号的有关问题 为什么右移

发布时间: 2011-12-08 21:33:54 作者: rapoo

关于>>运算符号的问题 为什么右移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

读书人网 >J2SE开发

热点推荐