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